14

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

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

错误:“绑定”不是“标准”的成员

尽管我在文件的开头包含了functional.h,并且我以以下形式使用'function'和'bind':std::function 和std::bind

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

4

3 回答 3

17

不是functional.h,只是functional

#include <functional> //without .h

请注意,std::function并且std::bind仅附带 C++11。所以你可能需要升级你的编译器,以防你还没有升级。

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

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

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

于 2013-01-10T15:13:55.157 回答
6

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

于 2013-01-10T15:13:15.540 回答
1

你也可以使用 boost::bind:

#include <boost/bind.hpp>
于 2014-12-15T08:51:20.750 回答