尽管结构已序列化,但提升错误“结构没有名为'序列化'的成员”

Posted

技术标签:

【中文标题】尽管结构已序列化,但提升错误“结构没有名为\'序列化\'的成员”【英文标题】:Boost error "Structure has no member named 'serialize' " though the structure has serialize尽管结构已序列化,但提升错误“结构没有名为'序列化'的成员” 【发布时间】:2017-03-27 12:35:59 【问题描述】:

下面是我设计的结构和类,最终目标是使用 boost 序列化将值写入 xml 当我编译下面的代码时,我得到一个编译时错误(错误很大,我只是粘贴了它的最后一行,这可能是关于这个问题的)

/boost_1_49_0/include/boost/serialization/access.hpp:118: 错误: 'class std::map, std::allocator >, std::map, std::allocator >, std::map, std ::allocator >, IdInfo, std::less, std::allocator > >, std::allocator, std::allocator >, IdInfo> > >, std::less, std::allocator >>, std::分配器、std::allocator >、std::map、std::allocator >、IdInfo、std::less、std::allocator > >、std::allocator、std::allocator >、IdInfo> > > > > >、std::less、std::allocator > >、std::allocator、std::allocator >、std::map、std::allocator >、std::map、std::allocator >、IdInfo、std ::less, std::allocator > >, std::allocator, std::allocator >, IdInfo> > >, std::less, std::allocator > >, std::allocator, std::allocator >, std::map, std::allocator >, IdInfo, std::less, std::allocator > >, std::allocator, std::allocator >, IdInfo> > > > > > > >'没有成员命名为“序列化” make: *** [READER.exe] 错误 1

下面的 AssetReaderInfo clkass 实际上有一个成员序列化,但错误与它相矛盾。

我已在所有类中定义了序列化,但编译失败 另外,我没有指定主要的 cpp 代码,因为我认为它会增加混乱

请您提出问题所在吗?

struct IdInfo

    std::string m_milePost;
    std::string m_cellModemAlertExclusionList;

    public:
    IdInfo():m_milePost("milepost"),m_cellModemAlertExclusionList("dummyval");

    template<class archive>
    void serialize(archive& ar, const unsigned int version)
    
        using boost::serialization::make_nvp;
         ar & make_nvp("values", m_milePost);
         ar & make_nvp("values", m_cellModemAlertExclusionList);
    
;

class myReader 
 public:

    friend class boost::serialization::access;
   // Asset ID list
   typedef std::map< std::string,IdInfo > myMap;
   typedef std::map< std::string > mySet;
   struct ReaderInfo
   
         mySet m_aSList;
         myMap m_pList;
         myMap m_eList;
         // WIU/BS type
         std::string m_Type;
         std::string m_topic;
         std::string m_lastSavedMsg;
         template <class archive>
         void serialize(archive& ar, const unsigned int version)
         
           using boost::serialization::make_nvp;
            ar & make_nvp("values", m_topic);
            ar & make_nvp("values", m_Type);
            ar & make_nvp("values", m_eList);
            ar & make_nvp("values", m_pList);
         

   ;
    typedef std::map< std::string, ReaderInfo > GroupDataMap;
    GroupDataMap    m_GroupDataMap;

    template<class archive>
    void serialize(archive& ar, const unsigned int version)
    
        using boost::serialization::make_nvp;
        ar & make_nvp("Group", m_GroupDataMap);
     


int main()

   myReader Reader;
   boost::archive::xml_oarchive xml(ofs);
   xml << boost::serialization::make_nvp("Connections", Reader);

解决方案:

事实证明,我应该使用 std::map 将 /boost/serialization/map.hpp 包含为 iam

感谢您的帮助

【问题讨论】:

删除或自行回答。这样很明显,这个问题不再需要关注 【参考方案1】:

事实证明,我应该使用 std::map 将 /boost/serialization/map.hpp 包含为 iam

#include /boost/serialization/map.hpp

【讨论】:

以上是关于尽管结构已序列化,但提升错误“结构没有名为'序列化'的成员”的主要内容,如果未能解决你的问题,请参考以下文章

提升(反)序列化派生对象的向量,使用已删除的函数(unique_ptr)

尽管已安装,但无法在 .py 脚本中导入 plotly.express

尽管在空白字段上处理了错误,但表单正在提交

使用 Boost 发送序列化结构但得到输入流错误

尽管验证失败,但尝试序列化对象

golang新特性arena,带你起飞