题
这可能是一个愚蠢的问题。我试图让一个文本基泥浆。我需要每个房间类包含其他房间类供你参考试图转移到他们或从他们那里得到信息时。但是,我不能这样做,因为我显然不能在其定义内声明一个类。所以,我该怎么办呢?这就是我的意思是,当我说出我不能做到这一点:
class Room {
public:
Room NorthRoom;
Room EastRoom;
Room SouthRoom;
Room WestRoom;
};
解决方案
这是不可能具有Room
成员变量。可以使用虽然指针或引用。
class Room {
public:
Room* NorthRoom;
Room* EastRoom;
Room* SouthRoom;
Room* WestRoom;
};
其他提示
我肯定不是每个房间都有四个孩子的房间,对吧?否则你的房间的数目是无穷大,这是很难在有限的内存来处理: - )
您可以尝试
class Room {
public:
Room* NorthRoom;
Room* EastRoom;
Room* SouthRoom;
Room* WestRoom;
};
然后你就可以有NULL指针时房间没有孩子。
您Room
需要具有指针到其他Room
s(即,Room*
s)。
一个类的对象类型(如Room
)的大小至少是大到足以容纳它的所有成员变量(所以,如果加起来其每一个成员变量的大小,你会得到的最小尺寸类都可以。
如果一个类可能包含其自己的类型的成员变量然后其大小将是无穷大(每个Room
包含其他四个Room
s,其中每个都包含其他四个Room
s,其中每个都包含...)。
C ++没有引用类型的对象,如Java和C#。
您应该使用指针:
class Room {
public:
Room* NorthRoom;
Room* EastRoom;
Room* SouthRoom;
Room* WestRoom;
};
有可能的情况是,类不它的构造,所以当你使用指针您初始化它们之后,当类有construcotr定义。
不隶属于 StackOverflow