私はおそらくすでに答えを知っていますが、誰かがより良いアイデアを考え出すことができるかどうかを知りたいのです。C++折り返しが含まれています
大きなライブラリでは、相互参照を行う多くのクラスがあります。私はこれらのクラスを前方宣言することでこれを解決します。しかし、使いやすさのために、私は通常、このようなshared_ptrに表示できるのクラスの参照型を定義:A::Ref a
代わりのstd::shared_ptr<A> a
:
class A : public B {
public:
typedef std::shared_ptr<A> Ref;
};
非常に良く参照を可能にします。私が今見ている問題は、このようなRefを使用すると実際にそのヘッダファイルをインクルードする必要があり、循環インクルードにつながるということです。 XCodeはこのような共有ポインタを使用しているvarsのために完全に偽の値を表示するので、前方宣言を含むファイルでRef型を定義することはできません。
両方を行うには他にどのようなオプションがありますか?Refを実際のタイプで定義しますが、そのタイプを含むヘッダーを含める必要はありませんか?
これはおそらく行く方法です。上記の/囲む名前空間のAに前方宣言を追加し、それをヘッダーに入れます。 – Kent
Ref <>テンプレートエイリアスは実際にはここでは最高の解決策であり、2つの条件を完全に満たしています。 –