在彼此内部使用结构

时间:2021-06-29 16:21:22

标签: c++ struct

我试图在一个头文件中定义两个结构,它们都作为对象相互包含。更具体地说:

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++,并且我知道我可以将它们设为类,然后向前声明它们。但我想知道我是否可以在不让他们上课的情况下实现这样的目标。我也想单独使用它们,所以我不希望其中一个被声明在另一个中。

1 个答案:

答案 0 :(得分:3)

几件事:

  1. 正如 Sam 所说,去掉 typedef

  2. 将 Dweller 中的声明 Room room 更改为 Room* room,反之亦然。

  3. 为了让编译器满意,在前面放两个前置声明:

    struct Dweller;
    struct Room;