#include "stdafx.h"
template <class T>
class Base
{
public:
void foo()
{
T* pT = static_cast <T*>(this);
pT->PrintClassName();
}
void PrintClassName() { printf("This is Base/n"); }
};
class D1 : public Base <D1>
{
};
class D2 : public Base <D2>
{
public:
void PrintClassName() { printf("This is D2/n"); }
};
int _tmain(int argc, _TCHAR* argv[])
{
D1 d1;
D2 d2;
d1.foo();
d2.foo();
return 0;
}