Все,С ++ производного класса цепь Конструктор Ошибка
У меня есть 3 класса (в C++) в качестве наследования цепи с базовыми по умолчанию конструкторов, установленных для каждого из них. Однако 3-й класс в цепочке жалуется на отсутствие соответствующего конструктора для первого. Ниже приведен код для конструкторов:
class Base
{
protected:
int a, b;
public:
Base::Base(int first, int second)
{
this->a = first;
this->b = second;
}
}
class Second : protected Base
{
protected:
int c;
public:
Second::Second(int first, int second, int third = 2) : Base(first, second)
{
this->c = third;
}
}
class Final : protected Second
{
private:
int d;
public:
Final::Final(int first, int second, int third = 2) : Second(first, second, third)
{
}
}
Во время компиляции я получаю ошибку
«В конструкторе Final :: Final (ИНТ первый, не ИНТ второй, внутр третий)
нет соответствующего вызова to Base() "
Почему это пытается вызвать Base() вместо Base (first, second)?
Он компилируется и работает на моем ПК. Единственное, что я вижу, - это точки с запятой после: class A {}; <- –
Base :: Base ... Final :: Final ... вам, похоже, нравится печатать. Внутри определения класса вы можете опустить квалификацию, используя только Base .. Final. –
Какой компилятор вы используете? Ваш код компилируется в Visual Studio 2013 после добавления ';', предложенного @JakaKonda –