Eclipse CDT无法解析STL容器中元素的方法

pho*_*olz 6 c++ eclipse stl eclipse-cdt

我正在使用带有CDT的Eclipse Juno来开发带有自定义makefile的C++项目.我也在使用C++ 11的功能,我在Eclipse的解析器上遵循SO的建议.

问题是Eclipse无法解析在STL容器元素上访问的方法或字段.例如:

mainapp.h

typedef struct _PlayerCalibrationData {
    [...]
    std::string getSamplesStr()
    {
            [...]
    }
} PlayerCalibrationData;

std::vector<MainApp::PlayerCalibrationData> m_calibrationData;
Run Code Online (Sandbox Code Playgroud)

mainapp.cpp

m_calibrationData[0].getSamplesStr();
Run Code Online (Sandbox Code Playgroud)

getSamplesStr() 将加下划线并标记为错误,消息"方法'getSamplesStr'无法解析".

但是,无论我是从Eclipse还是从命令行调用它,编译器都不会抱怨.

此外,当我键入时m_calibrationData.,所有向量方法都通过内容辅助弹出(即,这不是Eclipse没有找到向量包含的问题),但是一旦我通过[]或访问元素at(),内容辅助就会安静,并且任何手动输入都会被标记作为一个错误.

这不起作用是正常的吗?如果是,有没有办法可以特别关闭基于模板的容器的辅助/纠正?

编辑

我现在也尝试禁用c ++ 11支持,如果我这样做,问题就会消失 - 但当然无法识别c ++ 11类型和语法.

编辑2

我导入了第二个项目,输入了完全相同的设置,对于这个项目,解析工作正常.唯一的区别是项目布局(makefile的不同位置).但即使我删除并重新导入第一个项目,它仍然无效.

And*_*eas 5

这对我有用:

"您的项目名称" - >右键单击 - >属性:

C/C++ General - >预处理器包括路径,宏等 - >切换到名为"Providers"的选项卡:

  • 对于"配置"选择"发布"(以及之后的"调试")

  • 关闭所有提供程序,只需选择"CDT GCC内置编译器设置"

  • 取消选中"在项目之间共享设置条目(全局提供商)"

  • 在"获取编译器规范的命令:"中添加"-std = c ++ 11",不带引号(也可以使用引号)

  • 点击应用并关闭选项

  • 重建索引

这适用于我的两个mashines,在家里和工作win7 x64,最新官方日食与cdt mingw-w64 gcc 4.7.2来自sourceforge上的mingwbuilds项目