我试图在一个头文件中定义两个结构,它们都作为对象相互包含。更具体地说:
typedef struct Dweller {
int id;
int age;
std::string name, lastname;
Room room;
float foodconsume;
float waterconsume;
};
typedef struct Room {
int id;
int WIDTH = 400;
int HEIGHT = 100;
std::vector<Dweller> dwellers;
float energyconsumed;
int property;
int floor, roomno;
};
但正如您可能已经注意到的那样,这是一个问题,因为 Dweller
不知道 Room
在代码的那个点是什么。我正在使用 C++,并且我知道我可以将它们设为类,然后向前声明它们。但我想知道我是否可以在不让他们上课的情况下实现这样的目标。我也想单独使用它们,所以我不希望其中一个被声明在另一个中。
答案 0 :(得分:3)
几件事:
正如 Sam 所说,去掉 typedef
。
将 Dweller 中的声明 Room room
更改为 Room* room
,反之亦然。
为了让编译器满意,在前面放两个前置声明:
struct Dweller;
struct Room;