创建类的问题,为什么?

wsmfighter2002 2005-05-29 09:22:56
我的类定义如下:
class ATL_NO_VTABLE CD_Dot :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CD_Dot, &CLSID_D_Dot>,
public IDispatchImpl<ID_Dot, &IID_ID_Dot, &LIBID_CONVERSIONLib>
{
public:
CD_Dot()
{
m_X=0;
m_Y=0;
}

DECLARE_REGISTRY_RESOURCEID(IDR_D_DOT)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CD_Dot)
COM_INTERFACE_ENTRY(ID_Dot)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

// ID_Dot
public:
STDMETHOD(get_Y)(/*[out, retval]*/ double *pVal);
STDMETHOD(put_Y)(/*[in]*/ double newVal);
STDMETHOD(get_X)(/*[out, retval]*/ double *pVal);
STDMETHOD(put_X)(/*[in]*/ double newVal);
private:
double m_X;
double m_Y;
};

#endif //__D_DOT_H_

为什么我在另外的类里面定义 CD_Dot DDot; 提示我的类为抽象类呢?
错误如下:
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(17) : error C2259: 'CD_3Dot' : cannot instantiate abstract class due to following members:
d:\microsoft visual studio\myprojects\conversion\d_3dot.h(10) : see declaration of 'CD_3Dot'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(17) : warning C4259: 'long __stdcall CD_3Dot::QueryInterface(const struct _GUID &,void ** )' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_3dot.h(30) : see declaration of 'QueryInterface'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(17) : warning C4259: 'unsigned long __stdcall CD_3Dot::AddRef(void)' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_3dot.h(30) : see declaration of 'AddRef'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(17) : warning C4259: 'unsigned long __stdcall CD_3Dot::Release(void)' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_3dot.h(30) : see declaration of 'Release'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(17) : error C2259: 'CD_3Dot' : cannot instantiate abstract class due to following members:
d:\microsoft visual studio\myprojects\conversion\d_3dot.h(10) : see declaration of 'CD_3Dot'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(17) : warning C4259: 'long __stdcall CD_3Dot::QueryInterface(const struct _GUID &,void ** )' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_3dot.h(30) : see declaration of 'QueryInterface'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(17) : warning C4259: 'unsigned long __stdcall CD_3Dot::AddRef(void)' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_3dot.h(30) : see declaration of 'AddRef'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(17) : warning C4259: 'unsigned long __stdcall CD_3Dot::Release(void)' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_3dot.h(30) : see declaration of 'Release'
Error executing cl.exe.

Conversion.dll - 2 error(s), 6 warning(s)
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinall 2005-05-29
  • 打赏
  • 举报
回复
CD_Dot是个抽象类,它的IUnknow并没有实现。
“如果你想实例化你的CD_Dot实现,就必须派生出另外一个基于模板的类”。
ID_Dot* pID_Dot = new CComObject<CD_Dot>
wsmfighter2002 2005-05-29
  • 打赏
  • 举报
回复
急啊,请各位指教
wsmfighter2002 2005-05-29
  • 打赏
  • 举报
回复
错误帖错了,其实是一样的,两个类都这样
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(31) : error C2259: 'CD_Dot' : cannot instantiate abstract class due to following members:
d:\microsoft visual studio\myprojects\conversion\d_dot.h(10) : see declaration of 'CD_Dot'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(31) : warning C4259: 'long __stdcall CD_Dot::QueryInterface(const struct _GUID &,void ** )' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_dot.h(29) : see declaration of 'QueryInterface'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(31) : warning C4259: 'unsigned long __stdcall CD_Dot::AddRef(void)' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_dot.h(29) : see declaration of 'AddRef'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(31) : warning C4259: 'unsigned long __stdcall CD_Dot::Release(void)' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_dot.h(29) : see declaration of 'Release'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(31) : error C2259: 'CD_Dot' : cannot instantiate abstract class due to following members:
d:\microsoft visual studio\myprojects\conversion\d_dot.h(10) : see declaration of 'CD_Dot'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(31) : warning C4259: 'long __stdcall CD_Dot::QueryInterface(const struct _GUID &,void ** )' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_dot.h(29) : see declaration of 'QueryInterface'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(31) : warning C4259: 'unsigned long __stdcall CD_Dot::AddRef(void)' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_dot.h(29) : see declaration of 'AddRef'
D:\Microsoft Visual Studio\MyProjects\conversion\ConvertCtl.cpp(31) : warning C4259: 'unsigned long __stdcall CD_Dot::Release(void)' : pure virtual function was not defined
d:\microsoft visual studio\myprojects\conversion\d_dot.h(29) : see declaration of 'Release'
Error executing cl.exe.

Conversion.dll - 2 error(s), 6 warning(s)

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧