struct B {};
struct D : private B {
B* fun () { return new D; } // ok
}
struct DD : public D {
B* foo () { return 0; } // error: ‘struct B B::B’ is inaccessible !
};
Эта ошибка кажется мне необоснованной. Если мы сможем использовать простой B*
в глобальной области, то почему бы и нет в его частных классах? демонстрация g++.
Мы не пытаемся преобразовать DD*
в B*
, что запрещено языковыми правилами (this, this, this - это связанные вопросы).
Обратите внимание: если я изменил B* foo()
на int foo()
, все будет хорошо.