Я пытаюсь инициализировать массив объектов класса в файлах .h и .cpp. Сначала я объявил его (game_map [12]) в файле .h, как показано ниже:Инициализация массива объектов класса C++
#include <string>
using namespace std;
class Game {
public:
Game();
~Game();
void test();
void InitializeMap(Game &game);
private:
class Room {
public:
Room (string desc);
Room();
~Room();
void PrintDesc(Room ¤t);
void SetDirection(int array_index, Room ¤t);
string description;
static int adjacent[3];rooms.
static string direction[4];
};
static Room game_map[12]; //Here is my array declaration
};
.
.
.
.
Однако, когда я пытаюсь инициализировать game_map в файле реализации ...
#include "Game.h"
using namespace std;
/*Public members*/
Game::Game(){}
Game::~Game(){}
/*Private members*/
Room Game::game_map[12] = {Room("scary")}; //trying to initialize here
.
.
.
/*Room*/
int Game::Room::adjacent[] = {-1,-1,-1};
string Game::Room::direction[] = {"-1","-1","-1","-1"};
Game::Room::Room() {}
Game::Room::Room(string descript) {
description = descript;
}
Game::Room::~Room() {}
.
.
.
Я получаю ошибка в том, что Room не определена, несмотря на то, что конструктор Room с правой стороны, по-видимому, распознается. Я попытался поставить объявление после конструктора комнаты, но это не устранило проблему. Может ли кто-нибудь сказать мне, что здесь происходит?
Спасибо!
'Игра :: Room', не' Room' – David
@ Dave удивительным, большое спасибо! – Adam