c++语法求助
最近写一个软件,想用一个操作,但是C++语法不熟,不知道该如何解决,还请大侠帮忙。如下是我的需求:
一个通信类:
Class Comm
{
public:
typedef void (CLASS_X::*PFNCOMREQNOTIFY)(UINT8 ucEvt,void *pDat);
std::queue<PFNCOMREQNOTIFY> pfnComReqQueue;
void ComSndReq(UINT8 *pucBuf,UINT32 dwLen,PFNCOMREQNOTIFY pfnCb);
};
我以前只有一个CLASS_X会调用Comm类,调用时直接用:Comm.ComSndReq(pBuf,Len,CLASS_X::SndReqCB)就可以了。但是现在有好几个类都可能调用Comm类,这样的话那个:CLASS_X可能是A,B,C任意的类。此时PFNCOMREQNOTIFY就可能是CLASS_A::SndReqCB(),也可能是CLASS_B::SndReqCB(),那此时该如何写代码,才能让CLASS_X自动适应是哪一个类呢?
还望大侠指点,多谢多谢。 C++ 类
[解决办法]
CLASS_A, CLASS_B, CLASS_C ... 都从同一个类继承, 这个类只有一个纯虚的接口函数, 比如
class IClassX {
public:
virtual void some_func(UINT8 ucEvt,void *pDat) = 0;
};
[解决办法]
那你用委托吧.
http://www.adintr.com/mytranslate/fastdelegate.html
前面有代码下载, 然后可以直接跳到 "代码使用方法" 看用法
[解决办法]
把 ComSndReq 做成函数模板,调用的时候现场推导类型。不过这样的话,那个 pfnComReqQueue 就用不上了,不知道你的应用里是不是必须用那个队列。