boost库中的智能指针向上转换
来源:互联网 发布:淘宝网开通淘金币活动 编辑:程序博客网 时间:2024/05/21 17:40
这里稍微解释下何谓指针类型的向下转换和向上转换。向下转换是指派生类指针转换为基类指针类型,向上转换是指基类指针类型转换为派生类类型。C++一般使用dynamic_cast转换符实现向上转换。智能指针可以毫无问题的进行向下类型转换,却不能使用dynamic_cast进行向上类型转换。例如:
- #include "boost/shared_ptr.hpp"
- class Base
- {
- public:
- Base(){};
- virtual ~Base(){};
- protected:
- private:
- };
- class DeriveClass : public Base
- {
- public:
- DeriveClass():Base(){};
- virtual ~DeriveClass(){};
- protected:
- private:
- };
- 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); // 这样出现编译错误
- return 0;
- }
那么怎么实现智能指针的向上转换呢?今天发现boost库有一个dynamic_pointer_cast的模板函数,可以实现智能指针的向上转换。如上例的可以这样写:
- boost::shared_ptr<DeriveClass> ptrDerive = boost::dynamic_pointer_cast<DeriveClass>(ptrBase);
另外在osg库中的智能指针向上转换也使用类似的dynamic_pointer_cast的模板函数。
0 0
- boost库中的智能指针向上转换
- boost库中的智能指针向上转换
- boost库中的智能指针向上转换
- 【涨姿势】boost库中的智能指针向上转换
- Boost中的智能指针
- Boost 中的智能指针
- Boost 中的智能指针
- Boost库中的智能指针 shared_ptr智能指针
- C++ boost库中的智能指针介绍
- 简介-Boost 中的智能指针
- 浅析C++标准库与boost库中的智能指针
- Boost库智能指针学习
- boost库的智能指针
- Boost库智能指针学习
- BOOST库 之 智能指针
- 【Boost】boost库中智能指针概述
- 详解C++中的Boost智能指针
- 详解C++中的Boost智能指针
- c++ shared_ptr智能指针使用注意事项
- DevExpress的控件GridControl光标定位到某一个单元格
- 黑马程序员高级视频学习笔记交通等管理系统
- ffmpeg源码分析
- 似乎在北京,所有人都变得那么通情达理。
- boost库中的智能指针向上转换
- Ubuntu装好后root的密码设置
- jQuery 入门教程(2): 基本语法
- js中null和 document.getElementById("userId")小结
- DevExpress的文本框 只能输入保留2位小数的正数字
- CF223A题Sereja and Dima
- android service被系统回收的解决方法
- 工作记录
- [2014年学习计划之RoR系列] 第二步 – 熟悉Ruby语言 (2/n) Blocks and Iterators (代码块和迭代器)