Создание матрицы объектов
Пытаюсь создать класс поля заполненного объектами. Объясните пожалуйста в чём ошибка.
class Object {
public:
char object;
Object(char obj) :object(obj) {};
Object() :object('X') {};
};
class Map
{
Map(int& x, int& y) {
int count_object = 0;
int width = 2 * x + 3;
int height = y + 2;
Object* line = new Object(); // Обявление края карты
Object* o = new Object(' '); // Обявление пустоты внутри карты
Object** field = new Object *[height];
for (int i = 0; i < height; i++) {
field[i] = new Object[width];
for (int j = 0; j < width; j++) {
if ((i == 0 && i == height - 1 && j == 0 || j == width - 1) && (j % 2 == 0))
{
field[i][j] = line; // Проблема здесь
}
else
{
field[i][j] = o;
}
}
}
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вы присваиваете указатель, а не объект:
Object** field
значит, field[i][j] имеет тип Object&. А line и o у вас указатели.
Чтоб просто скомпилировалось, достаточно
field[i][j] = *line;
Но будет ли это верно работать — не уверен, как минимум, имеется утечка памяти. Специально код не смотрел.
Вы не из java/c# на C++ переходите?