不知道如何正确解析类型定义

Don't know how to resolve typedef correctly

本文关键字:类型 定义 何正确 不知道      更新时间:2023-10-16

我认为在下面的代码中似乎存在typedefs的循环依赖。。。有什么办法绕过这个吗?这是我的问题的简化表达。无论我把typedef语句放在哪里,它都不希望正确解析。

struct Item {
    int id;
    ItemList* ptrToList;
}
typedef std::list<Item> ItemList;

您可以这样解决它(在MSVC2012下编译)

struct Item;
typedef std::list<Item> ItemList;
struct Item
{
    Item* item;
    ItemList list;
};

注意:我的结构与你的略有不同,但它仍然说明了这一点。

您可以只声明一个类型名称:

struct Item;

然后把剩下的组装起来。

使用正向声明:

struct Item;
typedef std::list<struct Item> ItemList;
struct Item {
    int id;
    ItemList* ptrToList;
};