class Base {
};
class Derived: private Base {
};
int main() {
Derived d;
static_cast<Base>(d);
}
Run Code Online (Sandbox Code Playgroud)
我知道由于私有继承,这样的强制转换是一个错误。然而,我感兴趣的是为什么错误消息是:
error: cannot cast 'const Derived' to its private base class 'const Base'
Run Code Online (Sandbox Code Playgroud)
特别是,为什么它不将“Derived”转换为“Base”?为什么这里有一个const?提前致谢。
static_cast<Base>(d)Base(const Base&)使用参数调用隐式复制构造函数Derived d,该参数通过引用传递const Derived&,并且无法const Base&通过众所周知的原因进一步转换。