私は以下のコードに私がいる問題を再現しました:問題は、私はAがT::type
の戻り値の型を持つ関数を持っていますが、Bが完全ではないので、持っている必要があるということですファンクション(CRTP)の戻り値の型としてテンプレートパラメータタイプを使用しますか?
template<typename T>
class A{
using type = T::type;
type someFunction(/*some parameters*/){/*code for the function*/}
//other stuff
};
template<typename T>
class B : public A<B<T>>{
typedef T type;
//other stuff
};
Aがコンパイルされたときに宣言したとき、コンパイルしようとするとエラーinvalid use of incomplete type ‘class B<int>’
が返されます(intは他の型に置き換えられます)。これを動作させる方法はありますか?