2012-10-29 33 views
7

我想在随机头中使用default_random_engine和uniform_real_distribution生成一些随机双数。无法解析类型'std :: default_random_engine'

我使用Eclipse for C/C++ & MinGW来构建我的项目。

  • Eclipse版本:4.2.1
  • Eclipse CDT的C/C++开发工具版本:8.1.1.201209170703
  • Eclipse CDT的GCC交叉编译器支持版本:1.1.0.201209170703
  • MinGW的版本:4.6.2 (使用“gcc -v”进行检查)

当我在编辑器中输入std :: default_random_engine时,Eclipse会提示我“Type'std :: default_random_engine'无法解析”。

我已经配置了我的项目,以支持C++ 11功能

然后我写了一个清单初始化向量和范围测试的支持C++ 11,代码工作正常。

vector<int> ivec = {1, 2, 3}; 
    for (int i : ivec) 
     cout << i << " "; 
    cout << endl; 

这有什么错了“的std :: default_random_engine”,我应该做些什么来解决这个问题?

+2

这可能是随你的编译器的libstdC++不支持较新的标准库功能,但您的编译器确实支持较新的语言功能。 –

+0

尝试std :: tr1 :: default_random_engine –

+1

您_do_包含''?另外,即使Eclipse不能识别它,它是否正确构建呢? –

回答

6

更新:从我发布原始答案起已经很长时间了,它已经过时了。我今天双重检查(2014年3月15日):在Eclipse开普勒(编译号20130614-0229)就足够了

  • 项目添加>属性> C/C++编译>设置然后在工具设置标签GCC C++编译器>其它-std=c++11标志,

  • 然后在窗口>首选项> C/C++>构建>设置发现标签上选择了CDT GCC内置编译器设置并将-std=c++11标志添加到命令获取编译器规格。在我的机器,它看起来像这样改变后:

    ${COMMAND} -E -P -v -dD -std=c++11 "${INPUTS}"

  • 清洁和重建两个项目索引(项目> C/C++指数>重建)作为Eclipse的趋向高速缓存错误消息并显示它们,即使它们在更改设置后不见了。

这确实适用于我的机器。如果它不在你的手中,那么你可能想要给这个:C++11 full support on Eclipse一个镜头,虽然我不确定这种方法的正确性,也没有必要在我的机器上做到这一点。截至2014年3月7日,用户claim它帮助他们,而上述方法没有。


原来的职位,现在已经过时:

这似乎是从IDE一个虚假的错误。

单击项目属性,然后选择C/C++常规>代码分析>语法和语义错误,并取消选择类型无法解析

我还必须在我自己的项目中禁用一堆其他语法和语义错误,例如无效参数,无效重载,符号未解析等。这些虚假错误来自Codan

(您可能必须添加__GXX_EXPERIMENTAL_CXX0X__到您的定义/预处理宏,不知道这一次虽然)。

+0

它有帮助吗? Eclipse之外的代码是否相同? – Ali

+0

非常感谢!抱歉回答如此迟。 从一开始我就想知道如果有一些方法更温和,但最近我遇到了更多这样的错误,所以我按照你的建议去做。 – zyy7259

+0

对不起,我正在学习使用本网站。我想编辑我的评论bu说:“评论只能编辑5分钟”。 我没有看到您的回复,我删除了我的第一条评论。 它确实有帮助。现在错误消失了。 我还没有尝试编译Eclipse以外的代码 – zyy7259