文档章节

c++ 模板--解决继承类参数传递

panda1986_meng
 panda1986_meng
发布于 2014/11/17 18:11
字数 263
阅读 38
收藏 0

阿里云携手百名商业领袖、技术大咖,带您一探行进中的数字新基建!>>>

详见srs-packet

/*这是从网上摘下的例子,主要讲述了 dynamic_cast<> 的使用方法。*/  

作用:将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理, 

       即会作一定的判断。 

       对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针; 

       对引用进行dynamic_cast,失败抛出一个异常,成功返回正常cast后的对象引用。 

  

注意:dynamic_cast在将父类cast到子类时,父类必须要有虚函数。例如在下面的代码中将CBasic类中的test函数不定义成 

       virtual时,编译器会报错:error C2683: dynamic_cast : “CBasic”不是多态类型 


模板使用:

class SrsProtocol

{

public:

    template<class T>

        int decode_message(SrsMessage* msg, T** ppacket)

        {

            int ret = ERROR_SUCCESS;

            *ppacket = NULL;

            SrsPacket* packet = NULL;

            if ((ret = do_decode_message(xxx, &packet)) != ERROR_SUCCESS) {

                return ret;

            }

            T* pkt = dynamic_cast<T*>(packet);

            *ppacket = pkt;

            return ret;

        }

};

© 著作权归作者所有

panda1986_meng
粉丝 3
博文 34
码字总数 8944
作品 0
昌平
程序员
私信 提问
加载中

评论(0)

C++笔记(2):《数据结构和问题求解》part1笔记

  前言:   C++,数据结构,算法,这些知识在互联网行业求职过程中是必备的,而本科电路硬件出身的我这些基本就没学过,也用得比较少,为了以后的饭碗,从现在开始还是花点时间来看下这些...

tornadomeet
2013/05/30
0
0
C++面向对象程序设计(陈维兴 林小茶)精讲

面向对象设计主要特征是程序=对象+消息,对象是基本元素,对象接收到消息后,启动有关方法完成操作。 面向对象程序设计的基本特征有:抽象、封装、继承和多态。 c++支持编译时的多态和运行时...

osc_80dzmuml
2019/01/01
1
0
C++ 模板惯用法

原文:C++ 模板惯用法 作者:Breaker 关于 C++ 模板编程的惯用法,note-to-self + keynote + idiom case + cross-reference 式笔记 目录 模板语法 模板惯用法示例 堆栈上分配 编译优化的开关...

晨曦之光
2012/05/23
1.5K
0
[C/C++]完整揭秘VS2010关于function和bind的实现

很久之前我就对C++里面的function非常感兴趣,也探究出了一些成果。 [C/C++]std::tr1::function源码剖析(一) [C/C++]std::tr1::function源码剖析(二) 这两篇文章是对VS2010中如何实现fun...

梁欢
2013/10/25
1.5K
0
使用C语言的struct来实现C++的class

如何在C语言中实现C++的Class呢? 一些低级设备比如嵌入式,或者一些底层驱动、操作系统中,是不能使用C++语言的。网上有很多对这方面的解释,除非对编译器做一些设置或者修改,但这样大大增加...

shzwork
2019/03/11
9
0

没有更多内容

加载失败,请刷新页面

加载更多

(人才测评)桌面运维工程师的招聘入职测评方案

桌面运维工程师,作为IT技术支持岗位的一种,不仅要有扎实的技术基础,还要有较强的时间观念意识,同时还应具备较强的逻辑思维能力和人际沟通能力,这样才能称得上一名合格的桌面运维工程师。...

蛤蟆丸子
26分钟前
37
0
JavaFX初探(菜单)

JavaFX初探(菜单) 本节我们介绍如何创建菜单、菜单栏、增加菜单项、为菜单分类,创建子菜单、设置菜单上下文。你可以使用下面的类来创建菜单。 MenuBar MenuItem Menu CheckMenuItem Radi...

whoisliang
30分钟前
20
0
Springboot 系列(四)Spring Boot 日志框架

文章已经收录在 Github.com/niumoo/JavaNotes ,更有 Java 程序员所需要掌握的核心知识,欢迎Star和指教。 欢迎关注我的公众号,文章每周更新。、 注意:本 Spring Boot 系列文章基于 Spring...

未读代码
34分钟前
20
0
26. Go 语言中通道死锁经典错误案例详解

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触...

王炳明
39分钟前
13
0
SpringBoot 整合 Redis 缓存

1.首先导入使用Maven导入jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><......

FH-Admin
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部