1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include <stdio.h> template<class T> class Base { public: Base() { } virtual ~Base() { } virtual void A() { printf("I'm Base::A\n"); } void B() { printf("I'm Base::B\n"); } virtual Base<T> *toBase() { return static_cast<Base<T> *>(this); } };