【发布时间】:2010-11-06 05:28:15
【问题描述】:
我正在尝试遵循此示例 http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/serialization.html#constructors,但我不断收到错误消息。按照示例,我在尝试访问私有变量时遇到错误(很公平):
bs.cpp:10: error: ‘const int my_class::m_attribute’ is private
但是,如果我将 save_construct_data 添加为朋友,我会收到一个模棱两可的错误:
/usr/include/boost/serialization/serialization.hpp:148: error: call of overloaded ‘save_construct_data(boost::archive::text_oarchive&, const my_class*&, const boost::serialization::version_type&)’ is ambiguous
/usr/include/boost/serialization/serialization.hpp:83: note: candidates are: void boost::serialization::save_construct_data(Archive&, const T*, unsigned int) [with Archive = boost::archive::text_oarchive, T = my_class]
bs.cpp:10: note: void boost::serialization::save_construct_data(Archive&, const my_class*, unsigned int) [with Archive = boost::archive::text_oarchive]
bs.cpp:29: note: void boost::serialization::save_construct_data(Archive&, const my_class*, unsigned int) [with Archive = boost::archive::text_oarchive]
我可以将函数定义移动到朋友声明中,但这很丑。
接下来我应该尝试什么?
谢谢, 杰恩
【问题讨论】:
-
您能否展示您尝试将
save_construct_data声明为好友的代码? -
pastebin.com/embed_iframe.php?i=d9zBvJag - 特别是 "template
朋友 void boost::serialization::save_construct_data(Archive & ar, const my_class * t, const unsigned int file_version);"
标签: c++ pointers boost boost-serialization default-constructor