1

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