1. ホーム
  2. c++

クラス継承に起因するエラー:エラーC2259 以下のメンバが原因で抽象クラスをインスタンス化できない。

2022-02-25 18:44:10

CControlBar を継承した新しいクラスは、エラー 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の概念と抽象クラス、インターフェース)