Как назначить объект свойству объекта в векторе с необработанными указателями?

Этот вопрос, вероятно, будет вопросом noob, потому что я только начал с C ++. Но я не могу понять, что я делаю неправильно. Проект, над которым я работаю, является заданием для школы. В этом задании нам разрешено использовать только необработанные указатели, поэтому мы узнаем, как работают необработанные указатели.

Теперь эти грубые указатели доставили мне неприятности. Эти указатели дали мне ошибку: «не существует подходящей функции преобразования из« Комнаты »в« Комнату * »».

Чтобы попытаться объяснить, как я вызвал эту ошибку, я постараюсь дать урезанную версию кода, который я написал.

class Level
{
private:
Room _startRoom;
vector<vector<Room>> _rooms;
};

class Room
{
public:
Room *North;
Room *East;
Room *South;
Room *West;
};

У меня есть класс с именем Level. Это класс с вектором в векторе, чтобы можно было аккуратно распечатывать комнаты рядом друг с другом. Не каждая комната соединена, поэтому я дал указание комнатным свойствам для связи с другими комнатами. Но когда я пытаюсь создать связь между комнатами, установив _rooms [y] [x] .South with _rooms [y + 1] [x]. Я получил ошибку: «не существует подходящей функции преобразования из« Комнаты »в« Комнату * »».

Может кто-нибудь уточнить, почему я получаю это сообщение об ошибке? Вся помощь будет оценена.

-1

Решение

Выражение _rooms[y + 1][x] это Room Например, не указатель на комнату. Чтобы получить указатель на него, вам нужно использовать адрес оператора &:

_rooms[y][x].South = &_rooms[y+1][x];

На несвязанной ноте: вы не забудьте заполнить векторы в вашем Level объект?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]