神様なんて信じない僕らのためにスマートフォン用の表示で見る神様なんて信じない僕らのためにこの広告は、90日以上更新していないブログに表示しています。2009-12-14イテレータを使う時、破壊されないようにしようc/c++C++でiteratorを使う時にありがちな不可解バグとして「イテレータを走査中にイテレータが破壊される操作を行う事で不可解な挙動を示す」ことがあげられる。vectorのiteratorを走査中には追加や削除を行ってはいけない。これはポインタを利用したvectorを使っていてクラス構造が複雑になると気付かないうちに発生したりする。messageListenerList_.end());}こんなメッセージ送信クラスを書いた場合。何らかのイベントをメッセージ送信によって各クラスに横断的に伝えようとする構造。インターフェイスを継承することでこのリストに加わり、デストラクト時に消え去ることができる。message){for_each(messageListenerList_.begin(),messageListenerList_.end(),boost::bind(&IMessageListener::handle,_1,boost::ref(message)));}こんな送信をする場合。簡単に各種クラスに送信してみます。codepadBar::handle:testFoo::handle:testHoge(0)::handletestHoge(1)::handletestHoge(2)::handletestHoge(3)::handletestHoge(4)::handletestHoge(5)::handletest-Bar::handle:test2Foo::handle:test2Hoge(0)::handletest2Hoge(1)::handletest2Hoge(2)::handletest2Hoge(3)::handletest2Hoge(4)::handletest2Hoge(5)::handletest2-送信されています。クラスBarはFooを持っていますが、それを途中で消したくなったとします。「あるメッセージを受信したときに」。codepadクラッシュした/(^o^)\こいつはデバッグ用イテレータなのでちゃんと検出してくれましたが、デバッグ用イテレータでない場合は不可解な挙動(例えば同じインスタンスのhandleが二回呼ばれるなど)が起こるケースがあります。イテレータも使...2009-01-20メンバ関数ポインタは悪だろうか?Cの関数ポインタに疲れていると、関数ポインタはまるで悪のよう...2008-09-28関数オブジェクトの存在意義まあそれにvirtualデストラクタがないから危険が危ない。...2008-05-09ポインタのポインタが返ってくるでござるSTLのiteratorにおけるoperator->()とoperator*()に関して。読者になる検索リンクヘルプはてなブログお知らせはてなブログをはじめよう!Isoparametricさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。