我正在编写一个回调函数,它引用了一个在结构中传递给它的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()函数的工作方式差不多(这里差别无关紧要),为什么会出错?
答案 0 :(得分:6)
实际上,你正在比较矢量&lt; int&gt;使用int,因为字段numVector具有类型
vector<int>*
简单地说,你已经声明了一个矢量数组。 Operator []将返回vector类型的值。
可能你拼错了宣言。也许你想按如下方式声明numVector:
vector<int> numVector;