Я делаю небольшую текстовую игру. мой код работает, если у меня есть его в основной функции, но при попытке включить его в свою собственную функцию он заполняет мои строки данными мусора, что в конечном итоге приводит к сбою программы при попытке прочитать данные.C++. Не удалось передать 2D-массив указателей в функцию
Итак, вот мой вопрос: как мне передать мой 2D-массив указателей помещения в мою функцию, чтобы я мог получить тот же результат, что и я, если бы я просто сохранил код в своей основной функции.
Ниже приведен код, действующий в моей функции, который будет работать отлично, если не находится в функции.
void InitialiseLevel(int CurrentLevel, Room *Level[2][2]){
if (CurrentLevel == 1){
JumpScareRoom JSRoom1;
Room *room1 = &JSRoom1;
JSRoom1.SetExits("se");
JSRoom1.SetDescriptions("I am a jumpscare room.", "I am a boring room 1");
JSRoom1.SetSouthMessages("There is a door to the SOUTH", "You exit through the SOUTH door.");
JSRoom1.SetEastMessages("There is a door to the EAST", "You exit through the EAST door.");
Room room2;
room2.SetExits("ws");
room2.SetDescriptions("I am a cool room 2", "I am a boring room 2");
Room room3;
room3.SetExits("ne");
room3.SetDescriptions("I am a cool room 3", "I am a boring room 3");
Room room4;
room4.SetExits("wn");
room4.SetDescriptions("I am a cool room 4", "I am a boring room 4");
Level[0][0] = room1;
Level[0][1] = &room2;
Level[1][0] = &room3;
Level[1][1] = &room4;
}
}
мой основной инициализирует массив как
Room *Rooms[2][2] = {};
затем вызывает функцию с помощью
InitialiseLevel(1, Rooms); // set up level 1.
Я пробовал много различных методов, таких как использование
void InitialiseLevel(int CurrentLevel, Room **Level[2][2])
и
void InitialiseLevel(int CurrentLevel, Room *(&Level)[2][2])
Однако, похоже, я что-то не хватает.
@ πάντα ῥεῖ, что отвечает на основной вопрос, с кодом, но не отвечает, как передать X * [] [] к функции, где она не является копией – NathanOliver
Спасибо за информацию , однако, поскольку я не знал во время публикации этого сообщения, что это были указатели, выходящие из сферы действия, вызывающие проблемы, информация, предоставленная по этому другому вопросу, только меня смутила. –
@YuriSuzumiya * Не обновляйте вопросы с помощью «Разрешено» или не содержит ответа. Вот что такое ответы (и если ответ не завершен, вы можете сами писать). – crashmstr