今日の 2 番目のテンプレートの質問です。
テンプレートクラスがあります:
template <class T>
class foo{
private:
//...
T SubFoo;
//...
};
myClass というクラスもあります。次のようなオブジェクトが必要です。
foo<myClass> myObject;
しかし、ここに問題があります。myObject.SubFoo から myObject へのポインタを取得できるようにしたいと考えています。つまり、クラス myClass のメンバーの 1 つは、テンプレート クラス foo のインスタンス化である必要があります。
だから私はできる:
class myClass{
//...
foo<myClass>* point2myClass;
}
ただし、これは機能しないようです。
./foo.h:103: エラー: 'foo::SubFoo' の型が不完全です
myClass を定義するとき、プログラムは次の行を見つけます。
foo<myClass>* point2myClass;
foo の定義に進み、以下を見つけます。
T SubFoo;
しかし、T、この場合 myClass はまだ定義されていない (それがプログラムが行っていたことです!) ため、T が何であるかがわからず、エラーが発生します。
宣言の順序を入れ替えると、「foo」が定義されないため、これも失敗します。
どうすればこれを機能させることができますか??
どうもありがとう!