0
我试图调试使用Boost序列化实现的保存/加载功能,但它不起作用。我创办这个问题是由类瓷砖造成的:序列化函数不叫
class tile : public game_object {
...
friend class boost::serialization::access;
template <class Archive>
void serialization(Archive ar &, const unsigned int version)
{
throw new std::exception; //I expect this will be thrown when serializing, but it isn't
ar & boost::serialization::base_object<game_object>(*this);
...
}
保存归档:从归档
boost::archive::text_oarchive archive(...);
tile t = ...;
archive << t;
加载:
boost::archive::text_iarchive archive(...);
tile t;
archive >> t;
的问题是,从类瓷砖的数据成员不在类game_object中的不会保存和加载。函数tile :: serialize从不被调用,但函数game_object :: serialize被调用。
感谢您的帮助和对我的英语感到抱歉。
你怎么知道它不被抛出?你抓到了'std :: exception *'吗?因为在'throw'中使用'new'非常奇怪C++ – sehe 2015-03-03 10:34:51
不,我没有收到任何东西,但我认为它会终止程序。但这个例外并不重要。关键是,tile :: serialize中的代码不会被执行。而且我知道这一点,因为我也有记录到文件,这是没有执行和断点,这是没有触发。 – user1361164 2015-03-03 11:13:06
我知道这一点。我只是检查事实,因为你的问题在细节上很低。你为什么不创建一个SSCCE?我们可能能够为您解决它...(然后,浏览现有的答案应该会给你这个信息) – sehe 2015-03-03 11:22:22