Этот вопрос, вероятно, будет вопросом 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]. Я получил ошибку: «не существует подходящей функции преобразования из« Комнаты »в« Комнату * »».
Может кто-нибудь уточнить, почему я получаю это сообщение об ошибке? Вся помощь будет оценена.
Выражение _rooms[y + 1][x]
это Room
Например, не указатель на комнату. Чтобы получить указатель на него, вам нужно использовать адрес оператора &
:
_rooms[y][x].South = &_rooms[y+1][x];
На несвязанной ноте: вы не забудьте заполнить векторы в вашем Level
объект?
Других решений пока нет …