我认为在以下代码中似乎存在typedef的循环依赖...有什么方法可以解决这个问题吗?这是我的问题的简化表达。无论我把typedef语句放在哪里,它都不想正确解析。
struct Item {
int id;
ItemList* ptrToList;
}
typedef std::list<Item> ItemList;
答案 0 :(得分:3)
您可以像这样解决(在MSVC2012下编译)
struct Item;
typedef std::list<Item> ItemList;
struct Item
{
Item* item;
ItemList list;
};
注意:我的结构与你的结构略有不同,但它仍然说明了这一点。
答案 1 :(得分:1)
您只能声明一个类型名称:
struct Item;
然后将其余部分组合起来。
答案 2 :(得分:0)
使用前瞻声明:
struct Item;
typedef std::list<struct Item> ItemList;
struct Item {
int id;
ItemList* ptrToList;
};