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(), все будет хорошо.
