0

このクラスを検討してください。

template<class T, int select>
class Foo()
{
  public:
    Foo() {}
    ~Foo() {}
    Param<select> value;
    void SomeInitialization();
    ...
}

selectテンプレートパラメータリストに値を明示的に記載せずに、SomeInitialization()関数を部分的に指定できますか?たとえば、関数の実現を1つにマージしたいと思います。

template<>
void Foo<SomeClass, 0>::SomeInitialization() { ... }

template<>
void Foo<SomeClass, 1>::SomeInitialization() { ... }

template<>
void Foo<SomeClass, 2>::SomeInitialization() { ... }

このようなものに(擬似コード):

template<>
void Foo<SomeClass>::SomeInitialization() { ... }

私の関数のコードはとにかくそれを使用せず、上記のすべての関数は同じコードを持っているので、ここselectで任意の値を指定できますが、すべての値に対してコピーして貼り付ける必要があります。SomeInitialization()select

どうすればそれを達成できますか?Foo私の投稿でサンプルクラスを使用して回答を提供してください。

4

1 に答える 1

1

この回答を見ると、あなたがしなければならないことは次のとおりです。

template<int N>
void Foo<SomeClass, N>::SomeInitialization() { ... }
于 2013-03-12T12:21:21.100 に答える