我想投这个:

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;
}

我应该怎么办?
我试着放:const Der* der = dynamic_cast<Der*>(base);来保存const,但这是行不通的。

最佳答案

尝试这个:

const Der* der = dynamic_cast<const Der*>(base);
dynamic_cast无法删除const限定词。您可以使用const分别丢弃const_cast,但这在大多数情况下通常是个坏主意。就此而言,如果您使用dynamic_cast捕获了自己,这通常是一个迹象,表明您有一种更好的方法来完成您想做的事情。这并不总是错误的,但是可以将其视为警告您正在艰难地做事。

关于c++ - 使用dynamic_cast转换const类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3605679/

10-11 05:31