Listing 9 Code illustrating a base class accessible only in certain contexts

// test conversions from derived to base using
// non-public base classes

class B
       {
public:
       int i;
       };

class T : protected B
       {
public:
       void foo();
       };

void T::foo()
       {
       T t;
       B *p = &t;   // ok, B accessible
       }

class V : private B
       {
public:
       void bar();
       };

void V::bar()
       {
       V v;
       B &r = v;    // ok, B accessible
       }

int main()
       {
       T t;
       V v;
       B *p = &t;    // error, B not accessible
                   // base of T
       B &r = v;     // error, B not accessible
                   // vase of V
       return 0;
       }
/* End of File */