博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为接口写一个 template 适配类
阅读量:2227 次
发布时间:2019-05-09

本文共 970 字,大约阅读时间需要 3 分钟。

为接口写一个 template 适配类

 黄国强 2010-10-21
先看一下三个类的定义。
// 一个接口
class ICallBack
{
public:
    virtual ~ICallBack(void){}
    // 此处是回调
    virtual void    CallBack(void) = 0;
};
// 内部类
class CSomeObj
{
public:
    CSomeObj(void);
    ~CSomeObj(void);
    void    Func(ICallBack * p);
};
// 对外的输出类
class CExportObj
{
public:
    CExportObj(void);
    ~CExportObj(void);
    void Func(ICallBack * pT);
private:
    CSomeObj    m_SomeObj;
};
显然,调用Func必须传入一个从ICallBack继承的对象,但是由于很多原因,我们无法这样做,那么就可以用template 适配类来解决这个问题。
// CExportObj 为对外的输出类
class CExportObj
{
public:
    CExportObj(void);
    ~CExportObj(void);
    void Func(ICallBack * pT);
    // 下面增加了一个模板方法
    template<class T>
    void Func(T * pT)    // 在这里无需调用者必须从 ICallBack 继承
    {
        TCallBackAdapter<T> tmp(pT);
        m_SomeObj.Func(&tmp);    // 这里传入的是    template 适配类
    }
private:
    CSomeObj    m_SomeObj;
};
下面是template 适配类的定义
// template 适配类
template <class T>
class TCallBackAdapter : public ICallBack
{
public:
    TCallBackAdapter(T * pT):m_pT(pT){}
    virtual void CallBack(void)
    {
        m_pT->CallBack();
    }
private:
    T * m_pT;
};   

转载地址:http://dlefb.baihongyu.com/

你可能感兴趣的文章
搞懂分布式技术21:浅谈分布式消息技术 Kafka
查看>>
后端技术杂谈1:搜索引擎基础倒排索引
查看>>
后端技术杂谈2:搜索引擎工作原理
查看>>
后端技术杂谈3:Lucene基础原理与实践
查看>>
后端技术杂谈4:Elasticsearch与solr入门实践
查看>>
后端技术杂谈5:云计算的前世今生
查看>>
后端技术杂谈6:白话虚拟化技术
查看>>
后端技术杂谈7:OpenStack的基石KVM
查看>>
后端技术杂谈8:OpenStack架构设计
查看>>
后端技术杂谈9:先搞懂Docker核心概念吧
查看>>
【数据结构】动态栈的实现
查看>>
【数据结构】简单的迷宫(用递归实现)
查看>>
【数据结构】队列的基本认识和队列的基本操作
查看>>
【数据结构】循环队列的认识和基本操作
查看>>
【LeetCode】无重复字符的最长子串
查看>>
时间复杂度
查看>>
【C++】动态内存管理 new和delete的理解
查看>>
【Linux】了解根目录下每个文件的作用
查看>>
【Linux】进程的理解(一)
查看>>
【Linux】进程的理解(二)
查看>>