Rak*_*kib 3 c++ dynamic-cast const const-cast
我想编写一个方法,将Base对象指针作为参数传递,并在方法内部将其转换为派生对象指针.
void func( const Base* const obj){
Derived* der = dynamic_cast<Derived*>(obj);
}
Run Code Online (Sandbox Code Playgroud)
但它显示错误,因为动态强制转换不能抛弃const说明符.但我不明白为什么const必须在这里删除说明符,我所做的只是创建一个派生指针,它应指向基指针之后的一些偏移量.我也试过const Derived* const der = dynamic_cast<Derived*>(obj);,但没有结果.
将参数传递为非常重要const.我怎样才能做到这一点?我必须做这件事的第一应用丑陋的方式const_cast,然后dynamic_cast?有没有更好的方法?
你const因为没有这样做而逃走了:
const Derived* der = dynamic_cast<const Derived*>(obj);
Run Code Online (Sandbox Code Playgroud)
如果你真的需要一个,Derived*那么你需要
Derived* der = dynamic_cast<Derived*>(const_cast<ObjType*>(obj));
Run Code Online (Sandbox Code Playgroud)
什么,你不能做的是去除的const预选赛了dynamic_cast.如果类型是多态的(至少有一个虚函数),你应该能够做到:
const Derived *der = dynamic_cast<const Derived*>(obj);
Run Code Online (Sandbox Code Playgroud)