编辑 - 将问题放入上下文中.
鉴于:
struct Base
{
...
};
struct Derived : public Base
{
...
};
class Alice
{
Alice(Base *const _a);
...
};
class Bob : public Alice
{
Bob(Derived *const _a);
...
};
Run Code Online (Sandbox Code Playgroud)
当我尝试实施时
Bob::Bob(Derived *const _d) : Alice(static_cast<Base*const>(_d)) { }
Run Code Online (Sandbox Code Playgroud)
这是行不通的.a const_cast对我来说没有意义,因为我不想改变常量,而且我没有改变我指向的东西,那么为什么g ++会告诉我
invalid static_cast from type ‘Derived* const’ to type ‘Base* const’
Run Code Online (Sandbox Code Playgroud)
?它说,如果我遗漏演员阵容
no matching function for call to ‘Alice::Alice(Derived* const)’
Run Code Online (Sandbox Code Playgroud)
如果有人能对此有所了解,我将不胜感激.