1

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

struct Item {
    int id;
    ItemList* ptrToList;
}

typedef std::list<Item> ItemList;
4

3 回答 3

3

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

struct Item;
typedef std::list<Item> ItemList;

struct Item
{
    Item* item;
    ItemList list;
};

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

于 2013-07-01T15:32:52.843 回答
1

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

struct Item;

然后用它组装其余的。

于 2013-07-01T15:33:13.567 回答
0

使用前向声明:

struct Item;
typedef std::list<struct Item> ItemList;
struct Item {
    int id;
    ItemList* ptrToList;
};
于 2013-07-01T15:36:01.493 回答