【发布时间】:2012-12-16 12:35:37
【问题描述】:
下图显示了针对这个问题的三个独立测试:
(我只关注声明而不是函数的定义~~)
我想知道为什么正确的错误“'A' is an inaccessible base of 'B'”。
为什么g++似乎是通过派生类初始化对基类的引用(由于受保护的继承而导致错误),
而不是像中间那样使用转换运算符将B转换为A并传入(即0错误和0警告)?
这是图片右边的代码:
struct A {
A &operator=( const A & ) { return *this; }
}a;
struct B : protected A {
operator A() { return A(); };
}b;
int main( void )
{
a = b;
return 0;
}
感谢您的帮助!~
【问题讨论】:
标签: c++ inheritance reference type-conversion