« 常陸多賀駅にSuica対応自動改札 | メイン | DVD「キル・ビル Vol.2」購入 »

2004年10月09日

Boostを試してみよう その2

インストールが済んだので、さっそく試してみました。とりあえずlexical_castとbindを使って既存のプログラムを書き直してみることにします。

lexical_castはその名の通り文字列変換を行うもので、今まで文字列からint型への変換を
method->SetSyncCtrlCode(atoi(text));
といったように書いていたのが、
method->SetSyncCtrlCode(boost::lexical_cast<int>(text));
と書くことができます。これだけだとあまりメリットはないように思えますが、int型から文字列型への変換も同じように書くことができます。変換の失敗時にbad_lexical_cast例外を投げてくれるのもいいですね。それと、Boost C++ Libraryプログラミングにも書かれていましたが、C++組み込みのキャスト演算子(reinterpret_castやdynamic_castなど)と見た目が似ているのも気に入りました。

bindはSTLのバインダと似ていますが、かなり強力です。STLではバインダとメンバ関数ポインタ・アダプタを組み合わせて
std::for_each(methods.begin(), methods.end(), std::bind2nd(std::mem_fun(&CBasicData::Accept), this));
このように書いていたのが、
std::for_each(methods.begin(), methods.end(), boost::bind(&CBasicData::Accept, _1, this));
と書くことができます。

投稿者 sai : 2004年10月09日 00:06

コメント

コメントしてください




保存しますか?