在封装一个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;
}
};
小弟第一次接触,而且这些是系统自动生成的。求高人指点!
错误代码是哪句啊
不知道你现在还有那个错误没有,我下午遇到后。是根据错误提示信息,将定义的接口中的参数类型 UINT 改为 UNIT_PTR ,这样就编译通过了。 我的是接口:GetCommandString函数中应该把UINT改成UINT_PTR,就可以了。注意你的接口声明和实现都得改!