問題の 1 つは、各派生クラスのコンストラクターで、適切なコンストラクター引数を 2 つの基本クラスの 1 つだけに転送していることです。それらのいずれにもデフォルトのコンストラクターがないため、基本クラスA
とB
.
2 番目の問題は、基本クラスのコンストラクターが暗黙的に として宣言されてprivate
いるため、基本クラスがそれらにアクセスできないことです。public
または少なくとも のいずれかにする必要がありますprotected
。
マイナーな問題: クラス定義の後にセミコロンを付ける必要があります。また、クラスを宣言するためのキーワードはclass
, notClass
です。
class A // <---- Use the "class" keyword
{
public: // <---- Make the constructor accessible to derived classes
int a, int b;
A(int x, int y)
{
some code....
}
}; // <---- Don't forget the semicolon
class B // <---- Use the "class" keyword
{
public: // <---- Make the constructor accessible to derived classes
int a, int b, int c;
B(int x, int y, int Z)
{
sme code....
}
}; // <---- Don't forget the semicolon
// Use the "class" keyword
class derived : public A, public B
{
derived(int a, int b) : A(a, b), B(a, b, 0) // <---- for instance
{
}
derived(int a, int b, int c) : B(a, b, c), A(a, b) // <---- for instance
{
}
}; // <---- Don't forget the semicolon