Eclipse C ++ std :: vector方法无效参数错误

时间:2014-07-25 10:28:26

标签: eclipse c++11 android-ndk stdvector eclipse-cdt

我正在开发一个使用OpenCV 2.4.9和NDKr9作为依赖的Android应用程序。我还使用Eclipse 4.4 Luna作为IDE,安装了CDT插件8.4。

每当我尝试使用方法std :: vector.at(int)或“[]”方法时,我都会遇到奇怪的错误。例如,考虑代码:

#include <vector>
.........................

struct CustomStruct {
int level;
Point firstPoint, secondPoint, middlePoint;
};
.........................

int maxElemNr = 10;
std::vector<CustomStruct > customStructVector(maxElemNr);
.........................

for(int i=0;i<customStructVector.size();i++){
            if(customStructVector.at(i).level == 0){

            }
        }

customStructVector.at(i) Eclipse告诉我以下内容:

  

无效的参数'候选人是:ResultWithEvidence&amp; at(?)const   结果与证据有关在(?)'

如果我想使用“[]”运算符,而不是“at(index)”方法,我会得到以下结果: resultWithEvidenceVector[i].level告诉我找不到字段level

我绝不是专家的C / C ++编码器,而且我在使用NDK时相当新。来自Java背景,我希望在调用CustomStructcustomStructVector.at(i)时获得customStructVector[i]类型的对象,这样我就可以简单地访问字段level我的目标,阅读其价值。

另外,将我的矢量声明为

int maxElemNr = 10;
std::vector<CustomStruct> customStructVector;
customStructVector.reserve(maxElemNr);

我明白了:

  

无效的参数'候选人是:void reserve(?)'

我已经搜索了答案,并提出了eclipse可能不会使用std库的c ++ 11版本的理论?

我已经从here了解了矢量类。此外,这个问题非常类似于here提出的问题。

如果需要,将提供有关我的环境的更多信息。我想解决这个问题,因为它现在对我的项目来说是一个很大的障碍..

我做错了什么?我以前使用std::vector类编译和运行代码没有问题。

LE:显然编辑器会识别变通方法&(resultWithEvidenceVector.data()+i)->level,并且代码会编译。仍然希望使用std::vector,因为它应该被使用。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。它适用于Visual Studio编译器,但是当我尝试访问向量元素时,我得到完全相同的错误。

但是,如果您不在&#39;使用&#39;然后它适用于例如customStructVector.at(i)使用customStructVector(i),

很奇怪。我没有详细测试它。请注意,如果您有向量,则必须转换结果才能访问类型成员。

此致