1. ホーム
  2. c++

[解決済み】C++でネストした型/クラスの前方宣言

2022-04-05 22:24:25

質問

最近、このような状況に陥りました。

class A
{
public:
    typedef struct/class {…} B;
…
    C::D *someField;
}

class C
{
public:
    typedef struct/class {…} D;
…
    A::B *someField;
}

通常はクラス名を宣言します。

class A;

しかし、ネストした型をフォワード宣言することはできず、以下のようにするとコンパイルエラーが発生します。

class C::D;

何かアイデアはありますか?

解決方法は?

無理です、C++言語の穴です。 少なくともネストされたクラスの1つをアンネストする必要があります。