次のコードでは、typedef の循環依存関係があるように思われます...これを回避する方法はありますか? これは私の問題の単純化された表現です。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;
};