文档章节

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

panda1986_meng
 panda1986_meng
发布于 2014/11/17 18:11
字数 263
阅读 29
收藏 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
昌平
程序员
私信 提问
C++ 模板惯用法

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

晨曦之光
2012/05/23
1K
0
function object研究之二

如何传递引用 <>提到可以让function object继承自unary_function,现在来试一下. 现在看看unary_function的源代码,了解一下原理。 这种方法虽然能解决问题,但是需要修改function object的源...

长平狐
2012/08/28
57
0
[C/C++]完整揭秘VS2010关于function和bind的实现

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

梁欢
2013/10/25
0
0
《鸡啄米C++编程入门系列》系列技术文章整理收藏

《鸡啄米C++编程入门系列》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201812.html 文章 鸡啄米:C++编程入门系列之前言 鸡啄米:C++编程入门系列之一(进制...

开元中国2015
2015/06/27
0
0
C++ 语言的 15 个晦涩特性

这个列表收集了 C++ 语言的一些晦涩(Obscure)特性,是我经年累月研究这门语言的各个方面收集起来的。C++非常庞大,我总是能学到一些新知识。即使你对C++已了如指掌,也希望你能从列表中学到...

oschina
2013/12/30
5.6K
22

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
22
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
17
0
my.ini

1

architect刘源源
今天
15
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
15
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
今天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部