E2251 基本クラス 'class' を初期化するデフォルトコンストラクタが見つからない (C++)
C++ 派生クラス 'class2' を構築する場合は,各基本クラス 'class1' を最初に構築する必要があります。
'class2' のコンストラクタが('class2' のヘッダーで)'class1' を指定していない場合は,この基本クラスのコンストラクタ class1::class1() が必要です。
このようなパラメータなしのコンストラクタは,デフォルトコンストラクタと呼ばれます。
クラス class1 のコンストラクタが定義されていない場合は,コンパイラが自動的にデフォルトコンストラクタを提供します。
次の場合は,コンパイラがデフォルトコンストラクタを自動的に提供しないため,自分で提供する必要があります。
class Base {
public:
Base(int) {}
};
class Derived = public Base {
Derived():Base(1) {}
}
// 明示的に Base コンストラクタを呼び出すか,
// Base のデフォルトコンストラクタを提供する必要があります
コンストラクタを持つクラスメンバーは,次のようにクラスの初期化子リストで初期化する必要があります。
class A {
public
A( int );
};
class B {
public:
A a;
B() : a( 3 ) {}; //OK
};