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