继承自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++中继承抽象基类时遇到编译错误的原因,并提供了解决方法。重点在于理解抽象基类与接口的区别,以及如何正确地在派生类中实现抽象基类中的所有纯虚函数。通过实例演示了如何修改派生类以避免编译错误,并链接了相关资源供进一步学习。

1万+

被折叠的 条评论
为什么被折叠?



