0
:私が欲しいものテンプレート型を参照せずにクラスへのポインタを宣言する方法はありますか?がfoo.hで
#include <vector>
class A {
int x;
};
typedef std::vector<A> AVector;
はbar.hでこれを置くことです:
#include <vector>
<<< some forward declaration of AVector here>>>;
class B {
AVector *myVector;
};
私はbar.hなしbar.hに宣言 "AVector" を転送したいですクラスAの定義を含める必要があります。クラスBはそれがポインタであり、ポインタ内の詳細ではないことを知る必要があるだけなので、これを宣言する方法があることを期待していました。
注:私は "void *"を宣言してさまざまな点でキャストすることができます。私はむしろタイプの安全性を失うことはありません。型の安全性を失うソリューションは私の問題を解決するものではありません。
質問にジャンBaptisteYunèsコメントから
前にはC++ 17あなたが許可されていません'A'が完全な型でないとき' std :: vector 'と言います。 –
@KerrekSB 'std :: vector '( 'std :: vector 'へのポインタを宣言してもインスタンス化されないこと)をインスタンス化しない限り、あなたは許可されていると思います。 – cpplearner
私は型の安全性を失いたくないので、型を何らかの方法で与える必要があります。 'class A; typedef std :: vector AVector; 'うまく動作します。 –