小编par*_*lel的帖子

将Derived*const转换为Base*const

编辑 - 将问题放入上下文中.

鉴于:

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)

如果有人能对此有所了解,我将不胜感激.

c++ const static-cast

5
推荐指数
1
解决办法
3368
查看次数

标签 统计

c++ ×1

const ×1

static-cast ×1