c++ 模板--解决继承类参数传递
2014-11-17 00:00
274 查看
摘要: 预估了下,得写3个类出来才能说明白,哈哈,慢慢写。
详见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;
}
};
详见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;
}
};
相关文章推荐
- C++ - 函数模板(function template)右值引用参数 问题 及 解决
- jni java c++ 参数传递问题解决
- C++模板实现模块间参数传递及回调之二
- C++模板实现模块间参数传递及回调(一)
- C++ - 函数模板(function template)右值引用参数 问题 及 解决
- 编程算法 - 不能被继承的类(模板参数友元) 代码(C++)
- C++模板实现模块间参数传递及回调之三
- C++ 关于模板之间的继承, 导致的模板子类的成员看不到(cannot access)模板父类的成员函数的解决办法。
- 解决multipart/form-data表单中传递参数问题(动态更改表单提交URL)
- tasklist向taskkill传递参数,问题解决(反思)
- 高质量c++(指针参数是如何传递内存的?)
- 解决multipart/form-data表单中传递参数问题(动态更改表单提交URL)
- 四种方案解决Form之间相互访问、参数传递的问题
- 四种方案解决Form之间相互访问、参数传递的问题
- SQL中函数返回表,传递一个参数,无法唤醒用户自定义函数,解决方法!
- 关于上个Flex-Jsp-DB例子中Flex和Jsp传递中文参数问题的解决方法!(Tomcat服务器)
- SQL Reporting Services 困惑的解决 直接传递参数并用ReportViewer来呈现报表
- JSP传递中文参数乱码问题的解决方法
- JSP的参数传递的乱码解决
- 用参数传递解决window.open的session变量有时候丢掉的问题