Aqu*_*Ash 0 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;
};
Run Code Online (Sandbox Code Playgroud)
由于矢量的[]运算符和at()函数的工作方式差不多(这里的差异无关紧要),为什么会出错呢?
实际上,您正在将vector <int>与int进行比较,因为字段numVector具有类型
vector<int>*
Run Code Online (Sandbox Code Playgroud)
简单来说,你已经声明了一个向量数组.Operator []将返回vector类型的值.
可能你拼错了宣言.也许你想声明numVector如下:
vector<int> numVector;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
434 次 |
| 最近记录: |