我一直在努力確保理解C++模板的語法,並且我認爲我只能說明最後一種情況。如果我有一個模板類,它有一個模板方法(與類的模板參數無關)作爲成員,我可以在類定義之外定義該方法嗎?如果是這樣,語法是什麼?模板類的模板成員方法可以定義在類定義的外部
如果在模板化類定義中定義了模板化方法,則一切正常。但是爲了在類之外定義方法,我嘗試了很多關鍵字和尖括號的組合,並且我總是得到編譯器錯誤(Visual Studio 2012)。
這裏的問題,歸結:
template <typename T>
class TestClass
{
public:
// ctor
TestClass(T classtype) {m_classtype = classtype;}
// The declaration/definition below is fine.
template <typename U> void MethodOk(U param) {printf("Classtype size: %d. Method parameter size: %d\n", sizeof(m_classtype), sizeof(param));}
// The declaration below is fine, but how do I define the method?
template <typename U> void MethodProblem(U param); // What is the syntax for defining this outside the class definition?
private:
T m_classtype;
};
真棒,謝謝! –