CodeZineです、はい。
shared_ptrによるObserverパターンの実装
お馴染みObserverパターンです。要はCallbackすよ。
Observerの歴史は古く、織田信長が長引く戦に疲弊し、矢の飛び交う中
「わしはちょっと寝る。なにかあったら起こせ」
と臣下に伝え馬上で熟睡したとの記録が残っており、
馬上で眠る信長公の姿を模した木彫りの馬: 御武座馬(おぶざば)
は郷土玩具として有名ですね。(うっそぴょーん)
Observerパターンに起こる問題のひとつが、
「起こそうとしたお館様が冷たくなってたらどーすんの?」
.NET/Javaでは強参照、つまり「死なさへんでぇ」と。
C++では参照カウントを使って死なさんこともできますし、
弱参照を使えば死んでもだいぢょぶな実装もできるよ。
ってなことを書いてます。コードたっぷりです。
ぢつは、このお話もう一本のルートがありましてですね。
.NETではdelegate/eventってゆーナイスなからくりが
Observerパターンの利用を自由なものにしてくれました。
delegateのおかげで特定のクラス/インタフェースから継承/実装
しなければ信長になれないってゆー縛りから解放されます。
さて、C++0Xでは新たにlambdaが導入されました。
このlambdaを使ってdelegate/eventの真似ごとができるはず。
どんな手管でdelegate/eventっポいものを作るか...知りたくね?
わんくま横浜勉強会にいらっしゃいませ(ホホホ)。
マンガ本とか魔導書とか怪しげなカードとかもありますよー