使用下标运算符的整数向量元素比较失败,但在函数处成功使用

时间:2012-02-29 12:20:21

标签: c++ windows api stl vector

我正在编写一个回调函数,它引用了一个在结构中传递给它的int向量。当我尝试使用下标运算符[]访问向量中的元素时,Intellisense指示==无法比较两个元素,具体是错误是 错误C2678:二进制'==':找不到运算符,它接受类型'std :: vector< _Ty>'的左手操作数(或者没有可接受的转换)。但是当使用at()函数时没有问题。

//body of call back function
searchInfo* argVal = (searchInfo*) Parameter;
for(int i = argVal->inclStartPos; i < argVal->exclEndPos; ++i){
    if(argVal->numVector[i] == argVal->searchNum)//problem here
        argVal->result = true;
//this is the structure passed through pointer

struct searchInfo{
int inclStartPos;
int exclEndPos;
vector<int>* numVector; 
int searchNum;
bool result;
};

由于矢量的[]运算符和at()函数的工作方式差不多(这里差别无关紧要),为什么会出错?

1 个答案:

答案 0 :(得分:6)

实际上,你正在比较矢量&lt; int&gt;使用int,因为字段numVector具有类型

vector<int>*

简单地说,你已经声明了一个矢量数组。 Operator []将返回vector类型的值。

可能你拼错了宣言。也许你想按如下方式声明numVector:

vector<int> numVector;