下图显示了针对此问题的三个独立测试:
(我只关注声明而不是函数的定义~~)
我想知道为什么正确的错误“'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;
}
谢谢你的帮助!~