何もできてないのにもう48回まで来てしまった。
昨日からshared_ptrのシリアライズではまってしまっている。
どうも私はboost::serializationの使い方をわかってないらしい。
boost::serializationでは、shared_ptrもそのままシリアライズ可能である。
ポインタの指す先をたどり、基底クラスのポインタを渡しても、正しく派生クラスのデータをシリアライズできるそうだ。
しかしこれがうまくいかない。
register_typeやBOOST_CLASS_EXPORT_GUIDを使ってもうまくいかない。
実行時にunregisterd_cast例外が投げられてしまうのである。
いろいろ調べた結果、void_cast_registerやsharedptrのための特殊な登録を行うとできるようになった。
しかし、なんのことやらさっぱりわからない。
使いこなすにはもう少し時間がかかりそうだ。
xar.register_type( static_cast< boost::detail::sp_counted_base_impl< sf::model::audio_interface::asio_driver , boost::checked_deleter<sf::model::audio_interface::asio_driver> > >(NULL) ); xar_.register_type( static_cast< boost::detail::sp_counted_base_impl< sf::model::audio_interface::dummy_driver , boost::checked_deleter<sf::model::audio_interface::dummy_driver> > >(NULL) ); void_cast_register< sf::model::audio_interface::asio_driver, sf::model::audio_interface::audio_interface >(NULL,NULL); void_cast_register< sf::model::audio_interface::dummy_driver, sf::model::audio_interface::audio_interface >(NULL,NULL);
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/sftracker/SFTracker/