#include "base.h" | |
template<class T> class Foo : public Base<T> { | |
public: | |
Foo() { } | |
~Foo() { } | |
virtual void A() { | |
printf("I'm Foo::A\n"); | |
} | |
void B() { | |
printf("I'm Foo::B\n"); | |
} | |
virtual Base<T> *toBase() { | |
return static_cast<Base<T> *>(this); | |
} | |
static Foo<T> *fromBase(Base<T> *b) { | |
return dynamic_cast<Foo<T> *>(b); | |
} | |
}; | |