【问题标题】:bind is not a member of stdbind 不是 std 的成员
【发布时间】:2013-01-10 15:11:34
【问题描述】:

我正在使用带有 minwg 编译器的 netbeans 7.2.1。我在尝试构建应用程序时收到以下错误消息:

错误:命名空间“std”中的“函数”没有命名类型

错误:'bind' 不是 'std' 的成员

虽然我在文件的开头包含了functional.h,但我使用'function'和'bind'的形式是:std::function和std::bind

问题出在哪里?是在编译器中还是缺少某些东西?我记得我在 Visual Studio 2010 上成功编译并运行了相同的应用程序。

【问题讨论】:

  • 所有标准 C++ 头文件都没有以 .h 结尾(如果你不计算 C 兼容性头文件)。

标签: c++


【解决方案1】:

不是functional.h,只是functional

#include <functional> //without .h

请注意,std::functionstd::bind 仅随 C++11 提供。所以你可能需要升级你的编译器,以防你还没有升级。

另外,使用-std=c++11 选项编译您的代码:

$ g++ -std=c++11 file.cpp

如果您升级了编译器,这应该可以工作。如果你的编译器有点老,你也可以试试-std=c++0x

【讨论】:

  • 我包含了 functional.h 标头。我正在使用 mingw-get 0.5-beta-2012-04026-1 但不确定它是否支持 c++11
  • 我当然读过它,我知道它可以在没有.h 的情况下使用!但是,我不确定我使用的 mingw 是否支持 c++11,考虑到我今天刚刚从 sourceforge 网站下载了它!
  • @user1638717:好的。我再次编辑了我的答案。您需要使用--std=c++11 选项。
  • 感谢您的大力帮助。但是,我使用的是 netbeans 7.2.1 IDE,而不是从命令行编译;是否可以指导我通过 netbeans IDE 添加这个编译选项,或者让它像命令行的这个选项一样工作?再次感谢您。
  • 谢谢大家,我会试着找到如何在 netbeans IDE 中处理它!
【解决方案2】:

您需要包含标题functional。它在C++11 中可用。如果您仍然遇到问题,那么您的编译器可能还不支持 C++11。尝试升级。

【讨论】:

    【解决方案3】:

    你也可以使用 boost::bind:

    #include <boost/bind.hpp>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 2013-10-07
      相关资源
      最近更新 更多