C++の深層

メンバ関数のポインタについて解説されているサイトがあった。
radiumsoftware.com
すごいなあ。キャストしている部分などは私にはほとんど理解不能だ。

// メンバ関数ポインタの呼び出しを無理矢理キャストするような感じ
pmf_t pmf = (pmf_t)(base_obj.*(&Base::operation));

この方法を使えばVCLの__closureに頼らなくても済みそうだ。

後半の空の仮想関数をスキップする方法も参考になる。今書いてるプログラムでは空の仮想関数が結構あるので、スキップさせればそれなりの効果はあるかもしれない。

UML

最近は、設計を考える時にできるだけUML図を描くようにしている。図にすると、それまであいまいだったソフトウェアの構造が具体的に見えるようになる。
UMLをエディタにはJudeを使っている。JudeJavaプログラムなので動作はやや重いが、使い勝手は良い。UMLを描こうとすると描き方が分からないことが多い。そんな時はファウラーの「UML モデリングのエッセンス 第3版」が手元に置いておきたい。実はこの本、既に2回目の通読途中なのだが、悲しいかなほとんど身についていない。やっぱり実際に使いながらでないと身につかないものだ。

UML モデリングのエッセンス 第3版

- UML超入門