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