S.F.Tracker(48)

公開:2005-06-14 20:00
更新:2020-02-15 04:36
カテゴリ:sftracker,windows,audio,tracker

何もできてないのにもう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/