我认为在我的以下代码中似乎存在 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;
};