子クラスにテンプレート化された基本クラス(Base)を継承する子クラス(Child)があります。子クラスも型のテンプレートです(整数など)。基本クラスでこの型にアクセスしようとしていますが、多くのことを試しましたが成功しませんでした...これが私が思うことです実用的なソリューションに近いかもしれませんが、コンパイルされません...
template<typename ChildClass>
class Base
{
public:
typedef typename ChildClass::OtherType Type;
protected:
Type test;
};
template<typename TmplOtherType>
class Child
: public Base<Child<TmplOtherType> >
{
public:
typedef TmplOtherType OtherType;
};
int main()
{
Child<int> ci;
}
これがgccが私に言うことです:
test.cpp:「Base>」のインスタンス化:test.cpp:14:7:
「Child」からインスタンス化test.cpp:23:16:ここからインスタンス化test.cpp:7:48:エラー:「notype」という名前のタイプ'classChild'のOtherType'</p>
これは同等の実用的なソリューションです:
template<typename ChildClass, typename ChildType>
class Base
{
public:
typedef ChildType Type;
protected:
Type test;
};
template<typename TmplOtherType>
class Child
: public Base<Child<TmplOtherType>, TmplOtherType>
{
public:
};
しかし、私を悩ませているのは、反復テンプレートパラメーター(TmplOtherTypeをChildtypeとして転送する)を基本クラスに転送することです...
皆さんはどう思いますか ?