1

重複の可能性:
前方宣言をいつ使用するか?
メンバーが相互に参照しているC++クラス

私はC++にかなり慣れていないので、以下に示すように、以下に定義されている2つの構造について質問があります。各構造体には、他の構造体へのポインタが含まれています。

    struct A{
    ...
        ...
    B *ptr;
}

    struct B{
    ...
    ...
    A* ptr;
};

ただし、2番目の構造は最初の構造の後にのみ定義されているため、コンパイルエラーが発生します。これに対する解決策はありますか?ヘッダーファイルで構造体を個別に宣言しようとしましたが、機能しませんでした。どんな助けでも大歓迎です!ありがとう。

4

2 に答える 2

2

C++ では、型へのポインターを取得するために、その型を完全に定義する必要はありません。前方宣言するだけです。

struct B;
struct A {
    ...
    struct B* ptr;
};
struct B {
    ...
    struct A* ptr;
};
于 2012-10-11T10:03:43.500 に答える
2

はい、前方宣言を使用します。

struct B;  //forward declare B
struct A{
    ...
        ...
    B *ptr;
};

struct B{
    ...
    ...
    A* ptr;
};

メンバーはポインターであるため、完全な定義は必要ありません。宣言で十分です。

于 2012-10-11T10:01:36.713 に答える