无法通过 - >访问矢量对象的功能操作者

时间:2017-01-18 14:25:54

标签: c++ pointers vector operator-keyword

这是vector的基本二进制搜索功能。我想访问一个对象的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;    
}

错误:

  

在函数&#39; bool binFindInVec(std :: vector *,std :: string)&#39;:
     176 14 [错误]基本操作数&#39; - &gt;&#39;有非指针类型&#st; :: vector&#39;
     179 19 [错误]基本操作数&#39; - &gt;&#39;有非指针类型&#39; std :: vector&#39;

2 个答案:

答案 0 :(得分:3)

在调用运算符[]:

之前,你应该取消引用'vec'
(*vec)[pos].getSurname();

更好(更安全),通过引用传递vector参数。不作为指针:

bool binFindInVec(vector<Client> const& vec,string sur)

答案 1 :(得分:-1)

编写vec[pos]->getSurname()假设vec的元素是指针(或智能指针)。由于您将普通Client对象的向量作为指针传递,因此您需要取消引用vec才能使用operator[]