【发布时间】:2011-02-24 20:24:48
【问题描述】:
我想做一个操作向量的函数,以便选择一个向量并返回它。 (最好的方法是返回一个指向该选择的迭代器。)
好的,我的标题中有这段代码:
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* 的未定义引用 Ecran::SelectFrom(std::vector >&)
我就是这样用的:
Club * toDel = Ecran::SelectFrom(_clubs);
就是这样,任何帮助将不胜感激。此外,是否有办法做到这一点,但返回一个迭代器而不是指向 T 的点?
已经谢谢你了。
【问题讨论】:
-
你的头文件在同一个项目吗?即使它们在同一个解决方案中,您也可能必须从另一个项目中引用一个项目