我正在尝试跨 .h 和 .cpp 文件初始化类对象数组。我最初在 .h 文件中声明它 (game_map[12]),如下所示:
#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 构造函数之后,但这并没有解决问题。谁能告诉我这是怎么回事?
谢谢!
最佳答案
像这样
Game::Room Game::game_map[12] = {Room("scary")}; //trying to initialize here
^^^^^^ add Game:: here
不过,我不喜欢所有静态成员的外观。清楚地表明您的设计有误。
关于c++ - 类对象数组的初始化 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20020313/