无法通过 -> 运算符访问矢量对象的功能

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[]