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(this); } };