#include <stdio.h>
template <typename SubClass>
class Base
...{
public:
void Run()
...{
SubClass* t = (SubClass*)this;
t->Func();
}
void Func()
...{
printf("Base::Run() ");
}
};
class Child : public Base<Child> //子类将自己的类型传递给父类
...{
public:
void Func() //子类实现了父类的同名方法
...{
printf("Child::Run() ");
}
};
class Child1 : public Base<Child1>
...{
public:
};
int main()
...{
Child a;
Child1 b;
a.Run(); //调用子类的方法
b.Run(); //调用父类的方法
return 1;
}