4

このテンプレートを特殊化するための正しい構文が見つからないようです:

template <class Object, class Var, class Invert, class Step = Var, unsigned int FIXED = IW_GEOM_POINT>
class TSin : public BasicTween<Object, Var> {...

テンプレート パラメーターとして保持したいが<Object>、他のすべてのパラメーターを特殊化します。私はこのように試しています:

    template <class Object>
class TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT> {...

これによりエラーが発生します。

テンプレートを特殊化するための正しい構文と、特殊化されたバージョンをインスタンス化するための構文を誰かが提供できますか?

4

2 に答える 2

1

コードは次のようになります:http://ideone.com/cvGy3

クラスのインスタンス化には、すべてのタイプを定義する必要があります。

于 2011-07-18T13:23:52.760 に答える
0

エラーは、あなたが再定義していることですclass TSin。私はあなたがそれを行うことができるとは思わない.

できることは、ジェネリック テンプレートを宣言し、クラスの定義を特殊化することです

template <class Object, class Var, class Invert, class Step = Var, 
    unsigned int FIXED = IW_GEOM_POINT>
    class TSin;
template <class Object>
    class TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT> {...

または、クラスのメンバーの定義を特殊化します。

template <class Object>
void TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT>::Foo(...) {...

またはサブクラスを宣言します。

template <class Object, class Var, class Invert, class Step = Var, 
    unsigned int FIXED = IW_GEOM_POINT>
    class TSin : public BasicTween<Object, Var> {...
template <class Object>
    class SpecialTSin::public TSin<Object, CIwVec2, int, CIwVec2, IW_GEOM_POINT>
{...

後者のオプションが最適だと思います。

于 2011-07-18T12:50:26.933 に答える