类的继承引起的一个错误:error C2259 cannot instantiate abstract class due to following members
2011-02-16 16:29
351 查看
错误描述:
e:/mywork/1.7sp1/ginfo/client/src/skdesigner/dsgquerydlg.h(295) : error C2259: 'CDsgFormatDataMgrDlg' : cannot instantiate abstract class due to following members:
e:/mywork/1.7sp1/ginfo/client/src/skdesigner/dsgformatdatamgrdlg.h(14) : see declaration of 'CDsgFormatDataMgrDlg'
错误原因:
一个实现类继承了一个抽象基类,但是却没有把抽象基类中的方法全部实现。
可以类似的实现:
virtual void EnableControl(PSKOPEROBJECT lpoo, BOOL bEnable) {}//这些是用不到的抽象基类中的方法,也要实现
代码实例:
class CDsgFormatDataMgrDlg : public CDialogImpl<CDsgFormatDataMgrDlg>,
public ISkBusinessEngineSink //抽象基类
{
public:
enum {IDD = IDD_FORMATDATAMGR_DLG};
CDsgFormatDataMgrDlg();
virtual ~CDsgFormatDataMgrDlg();
virtual BOOL PreTranslateMessage(MSG* pMsg);
...
}
class ISkBusinessEngineSink
{
public:
virtual void HandleOneCSObject(LPCTSTR lpszName) {}
virtual BOOL HandleUpdateCalendarResult(int nType, PCALENDAREVENT lpce,
DWORD dwClientTmpId, BOOL bRet, DWORD dwErrorCode) { return FALSE; }
virtual BOOL HandleUpdateDesktopResult(int nType, PDESKTOPITEM lpdi,
DWORD dwClientTmpId, BOOL bRet, DWORD dwErrorCode) = 0;
virtual void HandleHotBUList(PHOTBU lphb, int nCount) {}
virtual void OnDBFuncReady(BOOL bReady) = 0;
virtual void OnDBViewReady(BOOL bReady) = 0;
virtual void OnSNReady(BOOL bReady) = 0;
virtual void OnTableReady(BOOL bReady) = 0;
...
}
抽象基类中的方法必须完全实现...
附录:
http://www.cnblogs.com/shenfx318/archive/2007/01/25/630760.html(抽象基类和接口的选择和区别) http://www.cnblogs.com/TravelingLight/archive/2010/06/02/1750073.html(抽象基类的一些问题) http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Companion/cxx_crib/interfaces.html
(OO观念和抽象类和接口)
e:/mywork/1.7sp1/ginfo/client/src/skdesigner/dsgquerydlg.h(295) : error C2259: 'CDsgFormatDataMgrDlg' : cannot instantiate abstract class due to following members:
e:/mywork/1.7sp1/ginfo/client/src/skdesigner/dsgformatdatamgrdlg.h(14) : see declaration of 'CDsgFormatDataMgrDlg'
错误原因:
一个实现类继承了一个抽象基类,但是却没有把抽象基类中的方法全部实现。
可以类似的实现:
virtual void EnableControl(PSKOPEROBJECT lpoo, BOOL bEnable) {}//这些是用不到的抽象基类中的方法,也要实现
代码实例:
class CDsgFormatDataMgrDlg : public CDialogImpl<CDsgFormatDataMgrDlg>,
public ISkBusinessEngineSink //抽象基类
{
public:
enum {IDD = IDD_FORMATDATAMGR_DLG};
CDsgFormatDataMgrDlg();
virtual ~CDsgFormatDataMgrDlg();
virtual BOOL PreTranslateMessage(MSG* pMsg);
...
}
class ISkBusinessEngineSink
{
public:
virtual void HandleOneCSObject(LPCTSTR lpszName) {}
virtual BOOL HandleUpdateCalendarResult(int nType, PCALENDAREVENT lpce,
DWORD dwClientTmpId, BOOL bRet, DWORD dwErrorCode) { return FALSE; }
virtual BOOL HandleUpdateDesktopResult(int nType, PDESKTOPITEM lpdi,
DWORD dwClientTmpId, BOOL bRet, DWORD dwErrorCode) = 0;
virtual void HandleHotBUList(PHOTBU lphb, int nCount) {}
virtual void OnDBFuncReady(BOOL bReady) = 0;
virtual void OnDBViewReady(BOOL bReady) = 0;
virtual void OnSNReady(BOOL bReady) = 0;
virtual void OnTableReady(BOOL bReady) = 0;
...
}
抽象基类中的方法必须完全实现...
附录:
http://www.cnblogs.com/shenfx318/archive/2007/01/25/630760.html(抽象基类和接口的选择和区别) http://www.cnblogs.com/TravelingLight/archive/2010/06/02/1750073.html(抽象基类的一些问题) http://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Companion/cxx_crib/interfaces.html
(OO观念和抽象类和接口)
相关文章推荐
- 类的继承引起的一个错误:error C2259 cannot instantiate abstract class due to following members
- 水题第三记 一个小错误引起的崩溃
- 一个Hibernate中映射文件里设置引起的错误[续]
- 记一个合并代码导致的错误(自定义控件路径改变引起找不到类)
- 一个由于数据库并发引起的错误,开发环境里一切都正常、运行环境里不稳定、发生莫名奇妙的错误
- 一个超低级的错误引起的大问题
- JSP - Filter引起的一个奇怪错误 - 重复jsp内容
- IE6中javascript数组声明语法错误引起的一个问题
- 一个stmt多个rs进行操作引起的ResultSet已经关闭错误
- 关于Java中的继承和组合的一个错误使用的例子
- 关于Java中的继承和组合的一个错误使用的例子
- 一个修改RAC REDO引起的DATAGUARD错误 的处理
- 一个hql 关键字member(非mysql)引起的 vo 数据 保存数据库错误
- 标点引起的一个程序错误
- erlang中,一个小不点引起的读取文件错误
- 一个偶然错误引起对gcc和g++的认识
- 一个表单提交纠错引起的问题,session在上级页面继承
- 一个Hibernate中映射文件里设置引起的错误
- 一个后缀名引起的惨案--记用Openjtag烧写supervivi到NorFlash的一个错误
- 一个通配符引起的错误