C++
内部 (ネストされた) クラスの定義を外部 (囲んでいる) クラスの定義の外側に配置するにはどうすればよいですか? 外部クラスはデータ メンバーとして内部クラスのインスタンスを少なくとも 1 つ持ちます。私は検索しましたが、私が見つけた最も関連性の高いSOの回答であるソースファイルのネストされたクラス定義には、外部クラスがデータメンバーとして内部オブジェクトを持つ例がありません。外部クラスの定義内で内部クラスを宣言するが定義しない限り、私はその答えに従いましたが、私のコードはまだ壊れています:
struct Outer
{
struct Inner;
Inner myinner;
Outer() : myinner(2) {}
};
struct Outer::Inner
{
Inner(int n) : num(n) {}
int num;
};
int main()
{
Outer myouter;
}
error C2079: 'Outer::myinner' uses undefined struct 'Outer::Inner'
VC11でエラーが発生します。
そして、次の作業コードのように、壊れたコードが のInner
定義内で定義されているバージョンと同等の効果を持たないのはなぜですか?Outer
struct Outer
{
struct Inner
{
Inner(int n) : num(n) {}
int num;
} myinner;
Outer() : myinner(2) {}
};