用C做这样的事情是不可能的吗?
struct room{
//Name of the room
char* name;
//Type fo the room
char* type;
//Array of outbound connections, max of six
struct room connections[6];
//A counter variable for how many connections the room actually has been assigned
int numOfConnections;
};
我正在创建相互连接的房间的地图,我认为让每个房间跟踪与其连接的房间的最简单方法是制作一系列房间结构,然后放置房间在他们。
我收到一条错误消息,指出房间中的数组具有不完整的元素类型。错误在“结构室连接[6];”行上
答案 0 :(得分:1)
为了在其内部存储struct
,它必须是指针类型。否则,如注释中所述,此struct
将占用无限空间。下面的更改使它成为指向6个struct room
的指针。
struct room{
//Name of the room
char* name;
//Type fo the room
char* type;
//Array of outbound connections, max of six
struct room* connections[6];
//A counter variable for how many connections the room actually has been assigned
int numOfConnections;
};
答案 1 :(得分:1)
我正在创建相互连接的房间的地图
您选择的解决方案(在rooms
的结构中包含room
的数组)不代表您的问题。就像在rooms
中包含其他room
。正如您的错误消息所示,这也不可能。
您需要存储在room
结构中的是它所连接的另一个rooms
的链接(或地址)。这样做是可行的,因为这是一个非常明确的问题,有明确的解决方案。因此,在struct room
中,将指针(即地址)存储到它所连接的房间。
struct room* connections[6];
上面的代码行表示connections
是6个元素的数组,这些元素是指向struct room
的指针。