
错误信息:
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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)