3

这可能是一个愚蠢的问题。我正在尝试制作文字泥。我需要每个 Room 类包含其他 Room 类,当尝试移动到它们或从它们获取信息时可以引用这些类。但是,我不能这样做,因为我显然不能在其定义中声明一个类。那么,我该怎么做呢?当我说我做不到时,这就是我的意思:

class Room {
    public:
        Room NorthRoom;
        Room EastRoom;
        Room SouthRoom;
        Room WestRoom;
};
4

4 回答 4

5

不可能有Room成员变量。不过,您可以使用指针或引用。

class Room {
    public:
        Room* NorthRoom;
        Room* EastRoom;
        Room* SouthRoom;
        Room* WestRoom;
};
于 2010-10-23T15:24:06.267 回答
2

我敢肯定不是每个房间都有四个儿童房,对吧?否则你的房间数量是无限的,在有限的内存中很难处理:-)

你可以试试

class Room {
    public:
        Room* NorthRoom;
        Room* EastRoom;
        Room* SouthRoom;
        Room* WestRoom;
};

然后,当房间没有孩子时,您可以使用 NULL 指针。

于 2010-10-23T15:25:27.033 回答
1

Room需要有指向其他Rooms(即Room*s)的指针。

一个类类型对象(Room如.

如果一个类可以包含它自己类型的成员变量,那么它的大小将是无限的(每个Room包含四个其他Rooms,每个包含四个其他Rooms,每个包含...)。

C++ 没有像 Java 和 C# 这样的引用类型对象。

于 2010-10-23T15:24:13.573 回答
0

您应该使用指针:

class Room {
    public:
        Room* NorthRoom;
        Room* EastRoom;
        Room* SouthRoom;
        Room* WestRoom;
};

可能的原因是该类还没有它的构造函数,所以当您使用指针时,您稍后会初始化它们,当类具有构造函数定义时。

于 2010-10-23T15:26:23.837 回答