返回信息流以前做过的一个客户端,DLL是别人开发的,现在看给出的头文件,里面有一个API类和一个回调类。
回调类RCallBack的设计大致是这样子的
#ifndef CM_OS_EXPORT
#define CM_OS_EXPORT __declspec(dllexport)
#endif
class CM_OS_EXPORT ICallback
{
public:
virtual void OnSign(int result, const CCmUserID& userid,const CCmString& passwd)=0;
virtual void OnLogin(int result,const CCmUserInfo& userInfo) =0;
}
在继承这个ICallback的时候的写法是这样的:
class RCallback : public virtual ICallback{
.......
}
这我就搞不懂了,为啥要用virtual 继承呢?
另外一处就是ICallback的声明里面没有声明虚机构函数
请做过类似开发的高手指教一下
这是一条镜像帖。来源:北邮人论坛 / cpp / #6151同步于 2008/5/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求达人解释一个DLL回调类设计中的问题
vivin
2008/5/4镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
单从你给的这个例子看,这个地方不用virtual继承也可以。
除非有多个父类,那么需要用到virtual继承。
另外关于虚析构函数的问题,ICallback只是一个接口。
建议你自己尝试写一个类似的Dll,对外给这么一个接口,大致就明白为什么会这么写了。