Как в С++ заполнить двухмерный массив объектов через цикл?
В строке 17 он ругается на отсутствие конструктора по умолчанию. В строке 21 ругается на некорректную инициализацию object[i][j]= A(32,56); Вопрос как правильно через цикл заполнить двухмерный массив объектов, чтобы вызывался конструктор с параметрами?
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Напишите в конструкторе
A(int a = 0, int b = 0):x(a)....
и не мучайтесь (просто создаем конструктор по умолчанию с параметрами 0,0).
Все прочие автоматически генерируемые компилятором конструкторы и операторы присвоения вполне пригодны для такого простого типа.
Автор решения: zurn
→ Ссылка
Можно, например, сделать с помощью вектора.
#include <iostream>
#include <vector>
class A
{
int x;
int y;
public:
A(int a, int b): x(a), y(b) {}
void get_value() {std::cout << x << ' ' << y; }
};
int main()
{
std::vector<std::vector<A>> object;
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 5; ++j)
{
object[i].push_back(A(i, j));
}
}
return 0;
}
