#include <iostream>
template <class Derived>
class Base
{
public:
void method1()
{
static_cast<Derived*>(this)->method1();
}
void method2()
{
static_cast<Derived*>(this)->method2();
}
};
class Derived1: public Base<Derived1>
{
public:
void method1()
{
std::cout << "Method 1 of Derived1 executed.\n";
}
};
int main(int argc, char *argv[])
{
Derived1 d1;
d1.method1();
d1.method2();
return 0;
}
フォローアップの質問:このタイプを安全にするにはどうすればよいですか?つまり、誰かがmethod2の実装を忘れた場合、コンパイラにそれをキャッチしてもらいたいのです。実行時にこれが爆発するのは望ましくありません。