boost shared_ptr 基类转到子类 boost::dynamic_pointer_cast
2013-08-21 15:27
1251 查看
#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::static_pointer_cast、boost::dynamic_pointer_cast和boost::const_pointer_cast
- C++ NEW的使用及 基类指针转换成派生类指针 及static_cast和dynamic_cast的说明
- 使用dynamic_cast强制将基类指针转换成子类指针
- boost.serialization中基类指针容器存子类对象的序列化
- 原型模式替代基类的静态函数违背ocr原则去dynamic_cast分支而拷贝对象的法子
- dynamic_cast 和 dynamic_Pointer_cast的使用
- 基类和派生类指针转换--dynamic_cast
- boost::static_cast、implicit_cast、const_cast、dynamic_cast
- 使用dynamic_cast将子类转换为父类指针时,结果可能为NULL
- C++ NEW的使用及 基类指针转换成派生类指针 及static_cast和dynamic_cast的说明
- 基类和派生类中使用static_cast和dynamic_cast进行类型转换
- std::static_pointer_cast, std::dynamic_pointer_cast, std::const_pointer_cast
- 基类和派生类指针转换--dynamic_cast
- boost::static_pointer_cast实现分析
- dynamic_cast 删除子类
- dynamic_cast: 通常在基类和派生类之间转换时使用,run-time cast const_cast: 主要针对const和volatile的转换. static_cast: 一般的转换
- static_cast、dynamic_cast、reinterpret_cast、和const_cast
- static_cast与dynamic_cast的联系与区别
- C++类型cast之static/dynamic/reinterpret/const
- static_cast,dynamic_cast,reinterpret_cast和const_cast