无法通过 -> 运算符访问矢量对象的功能
cant access vector object's function through -> operator
这是一个基本的二进制搜索函数,用于 vector.I 想要访问对象的 get 函数但我得到错误。
bool binFindInVec(vector<Client> *vec,string sur){
int from,to,pos;
from = 0;
to = vec->size()-1;
while(from<=to){
pos = (from+to)/2;
if(vec[pos]->getSurname() == sur){
return true;
}
else if(vec[pos]->getSurname() > sur){
to = pos-1;
}
else{
from = pos + 1;
}
}
return NULL;
}
错误:
In function 'bool binFindInVec(std::vector*, std::string)':
176 14 [Error] base operand of '->' has non-pointer type 'std::vector'
179 19 [Error] base operand of '->' has non-pointer type 'std::vector'
您应该在调用其运算符[]之前取消引用 'vec':
(*vec)[pos].getSurname();
更好(也更安全),通过引用传递矢量参数。不是指针:
bool binFindInVec(vector<Client> const& vec,string sur)
编写 vec[pos]->getSurname()
假定 vec
的元素是指针(或智能指针)。由于您将纯 Client
对象的向量作为指针传递,因此您需要取消引用 vec
才能使用 operator[]
这是一个基本的二进制搜索函数,用于 vector.I 想要访问对象的 get 函数但我得到错误。
bool binFindInVec(vector<Client> *vec,string sur){
int from,to,pos;
from = 0;
to = vec->size()-1;
while(from<=to){
pos = (from+to)/2;
if(vec[pos]->getSurname() == sur){
return true;
}
else if(vec[pos]->getSurname() > sur){
to = pos-1;
}
else{
from = pos + 1;
}
}
return NULL;
}
错误:
In function 'bool binFindInVec(std::vector*, std::string)':
176 14 [Error] base operand of '->' has non-pointer type 'std::vector'
179 19 [Error] base operand of '->' has non-pointer type 'std::vector'
您应该在调用其运算符[]之前取消引用 'vec':
(*vec)[pos].getSurname();
更好(也更安全),通过引用传递矢量参数。不是指针:
bool binFindInVec(vector<Client> const& vec,string sur)
编写 vec[pos]->getSurname()
假定 vec
的元素是指针(或智能指针)。由于您将纯 Client
对象的向量作为指针传递,因此您需要取消引用 vec
才能使用 operator[]