直接在 idl中 添加 一个 接口 :
interface IC : IDispatch{
};
通过 向导添加 简单对象:
interface IA :IC/*IDispatch*/{ //修改使得IA:IC
};我想 写个模版 类,这个 类实现 IC接口,之后在CA中继承 :
模版类:template <class _T, class _Interfac>
class ATL_NO_VTABLE CICImpl :public _Interfac
{
public: };
之后 在 A的头文件中 :
class ATL_NO_VTABLE CA :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CA, &CLSID_A>,
public IDispatchImpl<IA, &IID_IA, &LIBID_atljicheng2Lib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public CICImpl<CA,IC>
{
。
BEGIN_COM_MAP(CA)
COM_INTERFACE_ENTRY(IA)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY2(IDispatch,IA)
END_COM_MAP()
}这个 中提示错误啊?error C2259: 'ATL::CComObject<Base>' : cannot instantiate abstract class
为什么啊 ,应该 如何去改写。
interface IC : IDispatch{
};
通过 向导添加 简单对象:
interface IA :IC/*IDispatch*/{ //修改使得IA:IC
};我想 写个模版 类,这个 类实现 IC接口,之后在CA中继承 :
模版类:template <class _T, class _Interfac>
class ATL_NO_VTABLE CICImpl :public _Interfac
{
public: };
之后 在 A的头文件中 :
class ATL_NO_VTABLE CA :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CA, &CLSID_A>,
public IDispatchImpl<IA, &IID_IA, &LIBID_atljicheng2Lib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public CICImpl<CA,IC>
{
。
BEGIN_COM_MAP(CA)
COM_INTERFACE_ENTRY(IA)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY2(IDispatch,IA)
END_COM_MAP()
}这个 中提示错误啊?error C2259: 'ATL::CComObject<Base>' : cannot instantiate abstract class
为什么啊 ,应该 如何去改写。
解决方案 »
- VS2005编译问题
- 求助: 我想用DirectX在窗口上画一些不同颜色的方块,可画出来整个窗口都是单色的,而且我也没有定义这样的颜色
- 联众登陆大厅是TCP还是UDP?游戏的时候,比如两个人下象棋是TCP还是UDP?
- 如何找到句柄为hWnd的窗口上面标题为"关闭"的按钮的句柄?如何找到句柄为hIEWindow的IE窗口上面标题为"登陆"的按钮的句柄?
- <input type="file" value="XXX"></input>中的value不起作用?
- Kevin_qing()请进,FTP下载EXE等非文本文件出错
- strcpy的返回值为什么是char*,为什么不是bool或者int呢?
- 请问下VC中用ODBC连接数据库,但是打不开表如何解决?
- 编译eMule0.49c出现error LNK2005:错误,寻求高人帮助
- 窗口显示的时候先黑一下是怎么回事?
- 【提问】互动投影技术应该看一些什么书籍
- 关于recv的阻塞与非阻塞?
虚基类不能实例!即抽象类不能用来实例对象,他是用来被继承的,你必须先派生。