【问题标题】:Eclipse C++ std::vector methods invalid parameters errorsEclipse C++ std::vector 方法无效参数错误
【发布时间】:2014-09-17 04:24:45
【问题描述】:

我正在开发一个使用 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 告诉我以下内容:

Invalid arguments ' 候选者是:ResultWithEvidence & at(?) const ResultWithEvidence & at(?)'

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

我绝不是 C/C++ 编码专家,而且我在使用 NDK 方面还比较陌生。来自 Java 背景,我希望在调用customStructVector.at(i)customStructVector[i] 时获得CustomStruct 类型的对象,这样我就可以简单地访问我的对象上的字段level 来读取它的值。

另外,将我的向量声明为

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

我明白了:

Invalid arguments ' 候选者是:void reserve(?) '

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

我从here 阅读了有关矢量类的信息。此外,此问题与here 提出的问题非常相似。

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

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

LE: 显然解决方法&amp;(resultWithEvidenceVector.data()+i)-&gt;level 被编辑器识别,并且代码编译。仍然想使用std::vector,因为它应该被使用。

【问题讨论】:

  • Eclipse 就是这么好。我从编辑器中得到不存在的错误。我通常会发现使用简单的模板就可以了,所以你的情况似乎有点极端,但我确实发现它给了我根本不存在的错误。进行编译以找出问题的真相,然后忽略或关闭 eclipse 错误(不理想)。
  • 我最终使用了经典的 c 样式数组...谢谢您的帮助!虽然我已经绕过了这个问题,但如果有人知道它的答案,请发布它。也许其他人会有同样的问题,可能会找到你的答案。谢谢

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


【解决方案1】:

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

但是,如果您不使用“at”,那么它似乎可以工作,例如 customStructVector.at(i) 使用 customStructVector(i),

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

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 2018-09-14
    相关资源
    最近更新 更多