1 class JunkBase 2 { 3 public: 4 virtual void DoSomething( void ) = 0; 5 protected: ~JunkBase(void)6 virtual ~JunkBase( void ) {}; JunkBase(void)7 JunkBase( void ) {} 8 }; 9 10 class Junk : protected JunkBase 11 { 12 public: Junk(void)13 Junk( void ) : JunkBase() {} ~Junk(void)14 virtual ~Junk( void ) {} 15 protected: AsBase(void)16 inline JunkBase * AsBase( void ) 17 { return dynamic_cast< JunkBase * >( this ); } DoSomething(void)18 virtual void DoSomething( void ) { } 19 }; 20 21 22 23 24