我有一個類結構是模板模板的會員專業化
template<int T>
class MyClass {
public:
MyClass(){};
~MyClass(){};
template<class K> void foo();
};
現在我要專注基於在MyClass<int>
使用的整數值的foo()
方法,例如,如果INT代碼,我們有MyClass<2>
如果我有MyClass<3>
,我想要使用不同版本的foo<K>()
。不過我想在K
上仍然有foo<K>()
未專門化。
因此,這將意味着這樣的事情會好起來的
MyClass<2> myc2;
MyClass<3> myc3;
myc2.foo<SomeClass>();
myc2.foo<SomeOtherClass>();
myc3.foo<SomeClass>();
myc3.foo<SomeOtherClass>();
是否有可能專門以這種方式而不是專注於K
?我嘗試了幾個組合,但沒有成功。
你好jrok,你似乎已經釘牢了我想要的東西,不幸的是我嘗試了你已經建議的東西,它給出錯誤「C2244」 - 「無法將函數定義匹配到現有的聲明」。 – Dan 2012-02-24 15:52:52
@丹我使用GCC。我不是模板專家,所以我不確定哪種編譯器在這種情況下是正確的。 – jrok 2012-02-24 15:53:50
它對GCC有效嗎?它似乎應該爲我工作,但我使用VS2010,它不喜歡它。不幸的是,其他代碼依賴於VS2010,所以我可能需要解決。 – Dan 2012-02-24 16:01:49