Одна из проблем состоит в том, что в каждом из конструктора ваших производных классов вы адресуете соответствующие аргументы конструктора только один из ваших двух базовых классов. Ни один из них не имеет конструктора по умолчанию, поэтому вам нужно явно указать аргументы для построения обоих базовых классов A
и B
.
Вторая проблема заключается в том, что конструкторы ваших базовых классов неявно объявлены как private
, поэтому базовый класс не может получить к ним доступ. Вы должны сделать их либо public
, либо не менее protected
.
Незначительные проблемы: после определения класса вам нужно положить точку с запятой. Кроме того, ключевым словом для объявления класса является class
, а не Class
.
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
Попробуйте сделать Конструктор общественности. Кроме того, вы должны как-то инициализировать свою унаследованную копию A * и * B. –
Возможный дубликат [ошибка C2512: нет подходящего конструктора по умолчанию] (http://stackoverflow.com/questions/8689319/error-c2512-no-appro-default-constructor-available) – sashoalm