c++ - 类对象数组的初始化 C++

标签 c++ class initialization

我正在尝试跨 .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 &current);
            void SetDirection(int array_index, Room &current);

            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/

相关文章:

java - 通过套接字发送匿名类? (Java 中的对象..流)

c++ - 将 '\0' 放入数组最后一个元素之后的 char[] 是否安全?

c - 静态结构初始化 C

C++11 - move 包含文件流的对象

c++ - 如何导出模板函数的输出类型?

javascript - 在 Promise 或 Callbacks (JavaScript ES6) 中处理此问题的正确方法

python - 尝试从函数创建对象属性

c++ - 如何初始化一个私有(private)嵌套类类型的静态字段?

c++ - 特化内部类

c++ - 右递归文法还是左递归文法?