1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
class Base { public: Base() { } virtual ~Base() { } virtual const char * A() const { return "Base::A"; } const char * B() const { return "Base::B"; } virtual Base *toBase() { return static_cast<Base *>(this); } };