閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

2005-11-13から1日間の記事一覧

Generic Template Method を動的な多態に対応させてみた

かなり強引に。 #include <memory> class wrap_base { struct holder_base { virtual void execute() = 0; }; template<typename T> struct holder : public holder_base { T& instance; holder(T& value) : instance(value) {} void execute() { instance.execute(); } }; std::</typename></memory>…

髪を切りました

いつもは黙っていれば静かなまま終わるはずだったのですが、今日髪を切ってくれた人は見た瞬間に「ああ、この人は話すな」と思わせるような雰囲気があり、実際話す人でした。昔ほど人見知りはしなくなったらしく、普通にすごしていましたが、できれば静かに…

問題が間違っているか……

少し考えてみましたが、これは、やっぱり素直に仮想関数を使うべきですね。もうひとつ基底クラスを設けて、とか dynamic_cast を使って、など考えましたがいずれも RTTI を使用する羽目になるわけで、それなら最初から仮想関数にした方が解りやすい。しかし…

Generic Template Method を動的な多態に対応させるには

長いので続く。 #include <iostream> template<class T> struct base { void execute() { static_cast<T&>(*this).execute(); } }; struct hoge : public base<hoge> { void execute() { std::cout << "hoge" << std::endl; } }; struct foo : public base<foo> { void execute() { std::cout <</foo></hoge></t&></class></iostream>…