这可能是一个愚蠢的问题。我试图制作一个文字泥。我需要每个Room类包含其他Room类,当尝试移动它们或从它们获取信息时可以引用它们。但是,我不能这样做,因为我显然无法在其定义中声明一个类。那么,我该怎么做?当我声明我不能这样做时,这就是我的意思:
class Room {
public:
Room NorthRoom;
Room EastRoom;
Room SouthRoom;
Room WestRoom;
};
答案 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定义时启动它们。