私は本当に相互に含まれていると言っためにある言葉の欠如に実行されますが、考えてみます。2つの相互に包含する(循環依存)クラスをC++で分離して宣言するにはどうすればいいですか?
struct A;
struct C;
struct A {
struct B{
};
C* c;
};
struct C{
A::B* b;
};
かなり混乱が、いくつかの意味とコンパイルを行います。
しかし、AとCはより大きく、より複雑なクラスであるとき、それはファイルの2組にそれらを分離するのが自然です。次に、私は書いています:
//a.h
#pragma once
#include "c.h"
struct A{
struct B{
};
C* c;
};
//c.h
#pragma once
#include "a.h"
struct C{
A::B* b;
};
と対応する.cppファイル。これは間違いなく機能しません。だから、struct A
とC
を分ける方法があるのだろうか?
だけ前方a.hにCを宣言? A :: Bの前方宣言はできませんので、BをAの中から移動してください – paulm
'#include'の前後に前方宣言していますか? AのBを保存する方法はありませんか? – YiFei
いいえ私はthatsができるとは思わないいいえ – paulm