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