首页 新闻 会员 周边

ATL组件中提示“不能实例化抽象类”怎么解决

0
悬赏园豆:10 [已关闭问题] 关闭于 2010-07-30 08:55

 

错误 1error C2259: “ATL::CComObject<Base>”: 不能实例化抽象类c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h1801Bird02

在封装一个COM组件时,提示如下错误信息。

错误1error C2259: “ATL::CComObject<Base>”: 不能实例化抽象类c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h1801Bird02

错误附近代码如下:

代码
class CComCreator
{
public:
static HRESULT WINAPI CreateInstance(void* pv, REFIID riid, LPVOID* ppv)
{
ATLASSERT(ppv
!= NULL);
if (ppv == NULL)
return E_POINTER;
*ppv = NULL;

HRESULT hRes
= E_OUTOFMEMORY;
T1
* p = NULL;
#pragma warning(push)
#pragma warning(disable: 6014)
/* prefast noise VSW 489981 */
ATLTRY(p
= new T1(pv)) //error code
#pragma warning(pop)
if (p != NULL)
{
p
->SetVoid(pv);
p
->InternalFinalConstructAddRef();
hRes
= p->_AtlInitialConstruct();
if (SUCCEEDED(hRes))
hRes
= p->FinalConstruct();
if (SUCCEEDED(hRes))
hRes
= p->_AtlFinalConstruct();
p
->InternalFinalConstructRelease();
if (hRes == S_OK)
hRes
= p->QueryInterface(riid, ppv);
if (hRes != S_OK)
delete p;
}
return hRes;
}
};

 

小弟第一次接触,而且这些是系统自动生成的。求高人指点!

 

 

framework航的主页 framework航 | 初学一级 | 园豆:180
提问于:2010-07-19 20:28
< >
分享
所有回答(2)
0

错误代码是哪句啊

dege301 | 园豆:2825 (老鸟四级) | 2010-07-19 21:56
0

不知道你现在还有那个错误没有,我下午遇到后。是根据错误提示信息,将定义的接口中的参数类型 UINT 改为 UNIT_PTR ,这样就编译通过了。 我的是接口:GetCommandString函数中应该把UINT改成UINT_PTR,就可以了。注意你的接口声明和实现都得改!

tongailing | 园豆:202 (菜鸟二级) | 2013-06-25 17:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册