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