【发布时间】:2012-12-02 21:50:14
【问题描述】:
每当我尝试通过索引运算符访问向量元素的方法或字段时,例如bar[0].push_back(0) on vector< vector< int > > 我从 eclipse 中得到一个“方法无法解析”的语义错误。
使用g++ -Wall 或clang++ 可以很好地编译代码 - 这是一个简短的示例。
#include <set>
#include <vector>
#include <iostream>
int main()
{
std::vector< std::vector < int > > bar(10);
bar[0].push_back(0); // eclipse "method 'push_back' could not be resolved
(bar[0]).push_back(1); // eclipse "method 'push_back' could not be resolved
bar[0][0] = 0; // This and all else is just fine for eclipse
std::vector<int> &bar0 = bar[0];
bar0.push_back(2);
std::vector<int> *pbar0 = &bar[0];
pbar0->push_back(3);
return 0;
}
std::vector<std::pair<int, int> >::iterator 尝试访问 iter->first 时遇到类似问题。 (字段 'first 无法解析)。
它是一个 C/C++ 项目,.cpp 文件,在 Eclipse 4.2.1 中,没有未解决的包含。
我完全迷路了 - 我怎样才能摆脱这个日食错误?
更新:我也尝试过使用最新的可用版本:Juno Service Release 1。结果相同。
Update2:我实际上注意到,对于一个全新的项目,错误不会发生,所以我应该能够最终确定是什么设置导致了这个错误。到目前为止,我无法识别任何东西,没有定义(非内置)符号,路径看起来也不错。
【问题讨论】:
-
简单的答案:摆脱 Eclipse! :-)
-
Eclipse 4.2.1 可以很好地处理代码示例。您的“路径和符号”配置正确吗?即使编译器可能正在寻找正确的位置,Eclipse 本身也可能指向任何位置。另外:不要听杰瑞的!要坚强! ;)