类的继承引起的一个错误:error C2259 cannot instantiate abstract class due to following members

继承自CControlBar的新类,编译出错error C2259: 'CTestDockBar' : cannot instantiate abstract class due to following members:

 

错误原因:

一个实现类继承了一个抽象基类,但是却没有把抽象基类中的方法全部实现。

解决方法:

 //实现父类的抽象方法
 virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);

 

void CTestDockBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler)

 CWnd::UpdateDialogControls(pTarget, bDisableIfNoHndler);
}

 

抽象基类中的方法必须完全实现...

附录:

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观念和抽象类和接口)

 

你可能感兴趣的:(c++)