#include "boost/shared_ptr.hpp"
class Base
{
public:
Base(){};
virtual ~Base(){};
};
class DeriveClass : public Base
{
public:
DeriveClass():Base(){};
virtual ~DeriveClass(){};
};
int main(int argc, _TCHAR* argv[])
{
boost::shared_ptr<Base> ptrBase = boost::shared_ptr<DeriveClass>(new DeriveClass()); // 这样转换成功
// 下面出现编译错误
boost::shared_ptr<DeriveClass> ptrDerive = dynamic_cast<boost::shared_ptr<DeriveClass> >(ptrBase);
// 下面正确
boost::shared_ptr<DeriveClass> ptrDerive = boost::dynamic_pointer_cast<DeriveClass>(ptrBase);
return 0;
}
boost shared_ptr 基类转到子类 boost::dynamic_pointer_cast
最新推荐文章于 2023-11-30 22:51:58 发布
本文探讨了C++中boost::shared_ptr的使用方法,包括如何从派生类对象创建基类的智能指针,并演示了两种不同的向下转型方法:错误的方法导致编译失败,而正确的方法使用boost::dynamic_pointer_cast实现。
3374

被折叠的 条评论
为什么被折叠?



