2013-03-12 73 views
0

考慮這個類:指定類模板參數值的一個任何

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

我可以partialy指定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() { ... } 

其中select可以是任何值,因爲我SomeInitialization()函數的代碼不無論如何使用它,上面的所有功能都有相同的代碼,但我必須複製粘貼它爲每個select值。

我該如何做到這一點?請在我的文章中使用示例Foo類提供答案。

回答

1

如果你看一看this answer,好像所有你需要做的是:

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

@Yakk感謝您的修補程序。 – 2013-03-12 12:33:45

+0

感謝您的回覆。但是如果我這樣做,當我嘗試訪問此函數內的類成員時出現錯誤 - 「標識符X未定義」。我使用MSVS 2012. – GuardianX 2013-03-12 13:04:57

+0

順便說一句,在你提供的鏈接中,他只是使用float作爲類型,但我需要知道確切的值,因爲我的參數