定义中的类变量?

时间:2010-10-23 15:22:18

标签: c++ class variables scope mud

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

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

4 个答案:

答案 0 :(得分:5)

不可能拥有Room成员变量。你可以使用指针或引用。

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

答案 1 :(得分:2)

我确定不是每个房间都有四个儿童房,对吧?否则你的房间数量是无限的,在有限的记忆中难以处理: - )

您可以尝试

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

然后当房间没有孩子时你可以有NULL指针。

答案 2 :(得分:1)

您的Room需要指针到其他Room s(即Room* s)。

类类型对象(如Room)的大小至少足以包含其所有成员变量(因此,如果将每个成员变量的大小相加,则会得到班级的最小尺寸。

如果一个类可以包含自己类型的成员变量,那么它的大小将是无限的(每个Room包含另外四个Room,每个Room包含四个{{1}},每个都包含...)。

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

答案 3 :(得分:0)

你应该使用指针:

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

可能原因是该类还没有它的构造函数,因此当你使用指针时,稍后在类具有construcotr定义时启动它们。