使用私有构造函数的Boost序列化工作在1.57而不是1.58

使用私有构造函数的Boost序列化工作在1.57而不是1.58,第1张

概述在某些情况下,使用私有构造函数对类进行反序列化不适用于Boost 1.58.在1.57它工作得很好.使用Visual Studio 2013编译时,下面的代码提供以下错误消息. 错误信息: 1> SerializeTest.cpp1>c:\program files (x86)\vc\include\xmemory0(588): error C2248: 'A::A' : cannot acc 在某些情况下,使用私有构造函数对类进行反序列化不适用于Boost 1.58.在1.57它工作得很好.使用Visual Studio 2013编译时,下面的代码提供以下错误消息.

错误信息:

1>  SerializeTest.cpp1>c:\program files (x86)\vc\include\xmemory0(588): error C2248: 'A::A' : cannot access private member declared in class 'A'1>          c:\projects\serializetest\serializetest.cpp(14) : see declaration of 'A::A'1>          c:\projects\serializetest\serializetest.cpp(9) : see declaration of 'A'

码:

#include <boost/archive/text_iarchive.hpp>#include <boost/archive/text_oarchive.hpp>#include <boost/serialization/serialization.hpp>#include <boost/serialization/vector.hpp>#include <vector>#include <sstream>class A{public:    A(int i) {}private:    A() {}    frIEnd class boost::serialization::access;    template<class Archive>    voID serialize(Archive& ar,const unsigned int version)    {    }};class B{public:    B() {}private:    std::vector<A> m_a;    frIEnd class boost::serialization::access;    template<class Archive>    voID serialize(Archive& ar,const unsigned int version)    {        ar & BOOST_SERIAliZATION_NVP(m_a);    }};int main(int argc,char* argv[]){    std::ostringstream os;    boost::archive::text_oarchive oa(os);    {        B b;        oa & b;    }    {        std::stringstream myIstream;        myIstream.write(os.str().c_str(),os.str().length());        boost::archive::text_iarchive ia(myIstream);        B b;        ia >> b;    }    return 0;}

这是Boost回归还是我的疏忽?

解决方法 我有同样的问题,看看xmemory标题!对我来说,错误出现在std :: allocator上,所以我需要添加类似的东西
frIEnd class std::allocator<A>;

除了序列化的朋友类!

总结

以上是内存溢出为你收集整理的使用私有构造函数的Boost序列化工作在1.57而不是1.58全部内容,希望文章能够帮你解决使用私有构造函数的Boost序列化工作在1.57而不是1.58所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1239648.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存