c++ 模板--解决继承类参数传递
c++ 模板--解决继承类参数传递
panda1986_meng 发表于3年前
c++ 模板--解决继承类参数传递
  • 发表于 3年前
  • 阅读 23
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: 预估了下,得写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;

        }

};

共有 人打赏支持
粉丝 4
博文 29
码字总数 7000
×
panda1986_meng
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: