-2
У меня возникли проблемы с отслеживанием ошибки в следующем фрагменте кода. Я запустил его, и он говорит «A»: никакого подходящего конструктора по умолчанию не существует ». Где именно существует конструктор без параметров?'A': нет подходящего конструктора по умолчанию
#include<iostream>
using namespace std;
class A
{
int x;
public: A(int i) : x(i){}
int get_x() const { return x; }
};
class B : public A
{
int *y;
public: B(int i) :A(i){
y = new int[i];
for (int j = 0; j < i; j++) y[j] = 1;
}
B(B&);
int &operator[](int i) { return y[i]; }
};
B::B(B& a)
{
y = new int[a.get_x()];
for (int i = 0; i < a.get_x(); i++) y[i] = a[i];
}
ostream& operator<<(ostream &o, B a)
{
for (int i = 0; i < a.get_x(); i++)
o << a[i];
return o;
}
int main()
{
B b(5);
cout << b;
return 0;
}
Вам не кажется, что вы должны это знать? Какой компилятор не выводит номер строки ошибки? – LogicStuff
Ответ на ваш вопрос. Вы не определили конструктор по умолчанию для класса A. Вам нужно добавить 'A() {}' в тело 'class A' –
@PoojaNilangekar Это было бы неправильным решением. Лучше называть конструктор копии 'A'. – juanchopanza