我有两个基类 Base1 和 Base2。两者都有 1 个纯虚函数。 另一个称为 Derived 的类通过提供实现来实现上述两个类
class Base1
{
public:
virtual void Base1Method()=0;
};
class Base2
{
public:
virtual void Base2Method()=0;
};
class Derived: public Base1, public Base2
{
public:
Derived(){}
void Base1Method()
{
//IMPL
}
void Base2Method()
{
//IMPL
}
};
现在,
我有 boost::shared_ptr<Base1> spBase1 = new Derived();
如何转换 spBase1
至 boost::shared_ptr<Base2>
安全吗?
最佳答案
您想使用dynamic_cast
。对于dynamic_cast
shared_ptr
,使用std::dynamic_pointer_cast
.
std::shared_ptr<Base2> spBase2 = std::dynamic_pointer_cast<Base2>(spBase1);
这个我比较确定boost里面也是一样的(把std::
换成boost::
),大家可以自己找找看。如果可用,请使用 std
而不是 boost。
关于c++ - 将 Base1 指针转换为 Base2 指针(boost shared_ptr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23804382/