我意識到類似的問題之前已經被問到過,但是我閱讀了其中的一些,但仍然沒有看到我要出錯的地方。當我簡單地寫我的類而不將原型與定義分開時,一切正常。」沒有使用模板參數「
template<class T> class VisitedSet {
public:
VisitedSet();
int getSize();
void addSolution(const T& soln);
void evaluate();
private:
vector<T> vec;
int iteration;
};
而作爲這給了我這個錯誤的定義的例子:
int VisitedSet::getSize() {
return vec.size();
我以前從未取得了模板類,當我分開的原型和定義如下圖所示的問題發生,所以請原諒,如果這裏的問題是微不足道的。
注意:在大多數情況下,您希望頭中可以訪問模板成員函數的定義。如果定義在標題中,請記住將它們標記爲「inline」(或者在模板類定義中定義它們),如果它們不是,請仔細考慮並確保不需要標題中的定義(您可以如果在包含要使用該模板的* all *類型的定義的翻譯單元中顯式實例化,則不需要頭中的定義)。我擔心你很快會得到這個... – 2012-04-21 21:50:25