1

私は自分のアプリケーションに不思議なことに繰り返されるテンプレート パターンを使用することを考えています。ただし、クラスがユーザー定義型で動作するようにしたいと思います。以下に示すような構造を作成できるかどうかを理解したいと思います。

template <class T_leaftype>
class BaseTrajectoryPoint {
};


template <class MyType>
class MyTrajectoryPoint: public BaseTrajectoryPoint<MyTrajectoryPoint> {
    private:    
        MyType A;
};

上記のコードは、次のエラーでコンパイルに失敗します。

「テンプレート クラス BaseTrajectoryPoint」のテンプレート パラメーター リストの引数 1 で型/値が一致しません</p>

問題にアプローチする別の方法はありますか? 静的ポリモーフィズムを使用したいのですが、基本クラスで可能なすべてのメソッドを定義したいと考えています。

4

2 に答える 2

5
template <class T_leaftype>
class BaseTrajectoryPoint {
};


template <class MyType>
class MyTrajectoryPoint: public BaseTrajectoryPoint<MyTrajectoryPoint<MyType> > {
    private:    
        MyType A;
};

MyTrajectoryPoint型ではなく、テンプレートです。テンプレートパラメータとして渡すとtemplate<typename> class T>、そうではなくtemplate<class T>、後者は基本クラスが期待しているものです。ただしMyTrajectoryPoint<MyType>、型に名前を付けるので、基本クラスのテンプレート パラメーターとして使用できます。

もちろん、 の宣言を に変更することはできますがBaseTrajectoryPoint、完全な型ではなく、クラス テンプレートをテンプレート パラメーターとして使用するtemplate<template<class> class T_leaftype>必要があります。

于 2012-06-30T14:06:53.260 に答える
0

BaseTrajectoryPoint を継承するすべてのクラスがテンプレート クラスであることがわかっている場合は、次のことを行うことができます。

template<template < class > class TLeaf> // << This means: It is expected a template class as parameter
class BaseTrajectoryPoint{
};

template <class MyType>
class MyTrajectoryPoint: public BaseTrajectoryPoint<MyTrajectoryPoint> >{
    private:
        MyType A;
};
于 2012-06-30T15:32:32.550 に答える