C++相談室 part7
■ このスレッドは過去ログ倉庫に格納されています
0701デフォルトの名無しさん
NGNG原理的に無理。C++ には final キーワードがない以上
class C : public B
{
protected:
virtual void hage();
};
と定義することも可能で、この場合 C::hoge() の中では C::hage() を呼ぶ必要が
あるでしょ?
// インライン展開したら、これに C のインスタンスが渡されたときに
// 不正な動作をすることになる
void call_hoge(B* p) { p->hoge(); }
目的が 10000000 回 hage() を呼ぶという処理を共有したい (Strategy パターン
を効率よく実装したい) ならテンプレート使うかな。
template <class T>
struct HogeMixin
{
void hoge()
{
for( int i = 0; i < 10000000; ++i )
static_cast<T*>(this)->hage();
}
};
class B : public HogeMixin<B>
{
void hage() { ::GlobalCount++; }
friend struct HogeMixin<B>;
};
■ このスレッドは過去ログ倉庫に格納されています