Ceci est une fonction de recherche binaire de base pour un vecteur. Je veux accéder à la fonction get d'un objet, mais j'obtiens une erreur.ne peut pas accéder à la fonction de l'objet vectoriel via l'opérateur ->
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;
}
l'erreur:
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'
Vous pouvez '(* VEC) [pos] .getSurname()'. – songyuanyao
En outre, vous pourriez rendre les choses moins compliquées en passant une référence à la place: 'bool binFindInVec (vector & vec, string sur) {'. Ensuite, vous pouvez simplement utiliser: 'vec [pos] .getSurname()'. –
Vous pourriez également vouloir réfléchir à la raison pour laquelle vous devez passer un pointeur sur votre vecteur plutôt que sur une référence. –