代码 :
class Base {
...
};
class Derived : public Base {
void OnlyOwnedByDerived{
...
}
};
Run Code Online (Sandbox Code Playgroud)
问题是: 1. 如果我使用基类的智能指针来引用派生类,这样做的原因是我想获得只适合虚函数的动态绑定的好处。但是如果我想使用只属于派生类的函数,我该怎么做?
static_cast不同类的智能指针之间给了我一个错误......
在 C++11 中,有 dynamic_pointer_cast
您可以使用:
void func(std::shared_ptr<Base> b){
b->VirtualBaseFunction();
if(auto d = dynamic_pointer_cast<Derived>(b)){
d->DerivedSpecificFunction():
....more code
}
}
Run Code Online (Sandbox Code Playgroud)