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 !
};
这个错误对我来说似乎不合理。如果我们可以在全局范围内使用 simpleB*
那么为什么不能在其私有派生类中使用呢?g++ 演示。
我们不会尝试转换DD*
为B*
,这是语言规则所禁止的(this,this,this是相关问题)。
请注意,如果我更改B* foo()
为int foo()
,一切都会好起来的。