我想投这个:
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/