使用dynamic_cast转换const类

oka*_*ami 9 c++ dynamic-cast const

我想投这个:

class Base 
{
public:
    virtual ~Base(){};
};
class Der : public Base {};

int main()
{
    const Base* base = new Der;
    Der* der = dynamic_cast<Der*>(base); // Error

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?我试图把:const Der* der = dynamic_cast<Der*>(base);保留const但这不起作用.

Ecl*_*pse 19

试试这个:

const Der* der = dynamic_cast<const Der*>(base);
Run Code Online (Sandbox Code Playgroud)

dynamic_cast无法删除const限定符.您可以const使用a单独抛弃const_cast,但在大多数情况下通常是个坏主意.对于这个问题,如果你发现自己使用dynamic_cast,它通常是一个迹象,表明有一种更好的方式做你正在尝试做的.这并不总是错的,但把它作为你正在做的事情了艰辛的道路警告标志.