我想做一個函數來操縱一個向量來選擇一個並返回它。 (最好是返回一個指向該選擇的迭代器)STL向量和模板函數問題
好吧,我在這裏有這樣的代碼在我的頭:
class Ecran { // That means Screen in french :P
// Other definitions...
template<typename T>
static T* SelectFrom(vector<T> & v);
}
實現:
template <class T>
T* Ecran::SelectFrom(vector<T> &v){
int max = v.size();
cout << "Veuillez selectionner un objet parmis les suivants:" << endl << endl;
cout << "0) Aucun" << endl;
for (int i = 1; i <= max; i++){
cout << i << ") " << v[i-1] << endl;
}
bool isValid = false;
string raw;
int input;
while (!isValid){
raw = GetWord();
input = atoi(raw.c_str());
if((input >= 0) && (input <= max)){
isValid = true;
}
}
if (input == 0){
return 0;
}
return & (v[input -1]);
}
所以,這裏的問題:當我使用它時,編譯器告訴我:
未定義引用到'Club * Ecr一個:: SelectFrom(標準::矢量> &)
我用它這樣的:
Club * toDel = Ecran::SelectFrom(_clubs);
就是這樣,任何幫助將不勝感激。此外,有沒有辦法做到這一點,但返回一個迭代器,而不是指向T?
謝謝。
你的頭文件在同一個項目中嗎?即使它們處於相同的解決方案中,也可能需要引用另一個項目 – clamchoda 2011-02-24 20:31:12