標題很拗口,但基本上我寫的是這樣的:我如何在聲明之外爲非專業化的非模板類定義方法?
enum EnumType{ValA, ValB};
template<EnumType> class A {};
template<>
class A<ValA>
{
private:
double param;
public:
A(double param);
};
template<>
A<ValA>::A(double param)
{
// Do Stuff
}
,當我嘗試編譯它,我得到:
error: template-id 'A<>' for 'A<(EnumType)0u>::A(double)' does not match any template declaration
我這樣做不對嗎?
類似案件在網上搜索後,我試圖刪除template<>
(即使我不明白爲什麼這會工作),但後來我得到
multiple definition of 'A<(EnumType)0u>::A(double)'
我想,我可以代替inline
template<>
(我試過並編譯過),但是這並不覺得它是正確的(或者如果是這樣,我不明白爲什麼)。
有人可以向我解釋我寫的是什麼問題,爲什麼改變這似乎工作,以及有什麼正確的方法來做到這一點?
我想從第二個代碼片段中創建一個類的實例嗎?此外,問題不在於它不是會員模板功能。 – skypjack
感謝您注意到丟失的分號(但這只是我在帖子中輸入的一個錯字,而不是我實際的代碼中的東西) – Eternal