0

考虑这个类:

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

我可以部分指定 SomeInitialization() 函数而不明确提及其select模板参数列表中的值吗?例如,我想将功能实现合并为一个:

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

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

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

变成这样的东西(伪代码):

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

whereselect可以是任何值,因为我SomeInitialization()的函数代码无论如何都不使用它,并且上面的所有函数都有相同的代码,但是我必须为每个select值复制粘贴它。

我怎样才能做到这一点?Foo请在我的帖子中使用示例类提供答案。

4

1 回答 1

1

如果您看一下这个答案,似乎您所要做的就是:

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