【问题标题】:Type 'std::default_random_engine' could not be resolved类型“std::default_random_engine”无法解析
【发布时间】:2012-10-18 10:50:00
【问题描述】:

我想在 header random 中使用 default_random_engine 和 uniform_real_distribution 生成一些随机双数。

我使用 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 提示我“无法解析类型 '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”有什么问题,我应该怎么做才能解决这个问题?

【问题讨论】:

  • 您的编译器附带的 libstdc++ 可能不支持较新的标准库功能,但您的编译器确实支持较新的语言功能。
  • 尝试 std::tr1::default_random_engine
  • 包括&lt;random&gt;?此外,即使 Eclipse 无法识别它,它是否仍能正确构建?
  • @JoachimPileborg 哈哈 +10,在抱怨 Eclipse 的非工作 C++11 IDE 之前看看它是否编译。
  • 抱歉这么晚才回复你们。我正在学习使用这个网站,但还不熟悉。请看下面的第一个答案。我同意。即使 Eclipse 无法识别它,它也能正确构建...

标签: c++ eclipse c++11


【解决方案1】:

更新:自从我发布原始答案以来已经很长时间了,它已经过时了。我今天(2014 年 3 月 15 日)仔细检查了:在 Eclipse Kepler(内部版本号 20130614-0229)中,

  • Project > Properties > C/C++ Build > Settings 下添加,然后在 Tool Settings 选项卡上添加 GCC C++ Compiler > Miscellaneous -std=c++11 标志,

  • 然后在 Discovery 选项卡上的 Window > Preferences > C/C++ > Build > Settings 下选择 CDT GCC Built-in Compiler Settings 和将-std=c++11 标志添加到获取编译器规范的命令。在我的机器上,更改后它看起来像这样:

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

  • 清理并重建您的项目您的索引(Project > C/C++ Index > Rebuild),因为 Eclipse 倾向于缓存错误消息并显示它们尽管更改设置后它们消失了。

这肯定适用于我的机器。如果它不能在你的机器上运行,那么你可能想试一试:C++11 full support on Eclipse 虽然我不确定这是否正确方法也没有必要在我的机器上进行。截至 2014 年 3 月 7 日,用户 claim 表示它对他们有帮助,而上述方法没有。


原帖,现已过时:

罢工>

这似乎是来自 IDE 的错误错误。

点击项目属性,然后C/C++ General > Code Analysis > Syntax and Semantic Errors 并取消选择Type cannot be resolved

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

(您可能必须将__GXX_EXPERIMENTAL_CXX0X__ 添加到您的定义/预处理器宏中,但不确定这一点。)

【讨论】:

  • 它有帮助吗?相同的代码是否在 Eclipse 之外编译?
  • 非常感谢!很抱歉这么晚才回复你的答案。一开始我想知道是否有一些更温和的方法,但最近我遇到了更多这样的错误,所以我按照你的建议做了。
  • 对不起,我正在学习使用这个网站。我想编辑我的评论,但它说“评论只能编辑 5 分钟”。我没有看到你的回复,我删除了我的第一条评论。它确实有很大帮助。现在错误消失了。我没有尝试在Eclipse之外编译代码
  • 顺便说一句,即使 Eclipse 无法识别它,它也能正确构建
  • @zyy7259 目前,大多数 C++ IDE 都缺乏对 C++11 的支持。还没有找到一个我无法以某种方式绊倒的人。
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 2015-10-22
  • 2013-12-14
  • 1970-01-01
  • 2017-07-19
  • 2016-09-24
  • 2014-11-07
相关资源
最近更新 更多