我正在使用带有 minwg 编译器的 netbeans 7.2.1。尝试构建应用程序时收到以下错误消息:
错误:命名空间“std”中的“函数”未命名类型
错误:“绑定”不是“标准”的成员
尽管我在文件的开头包含了functional.h,并且我以以下形式使用'function'和'bind':std::function 和std::bind
问题出在哪里?是在编译器中还是缺少某些东西?我记得我在 Visual Studio 2010 上成功编译并运行了相同的应用程序。
我正在使用带有 minwg 编译器的 netbeans 7.2.1。尝试构建应用程序时收到以下错误消息:
错误:命名空间“std”中的“函数”未命名类型
错误:“绑定”不是“标准”的成员
尽管我在文件的开头包含了functional.h,并且我以以下形式使用'function'和'bind':std::function 和std::bind
问题出在哪里?是在编译器中还是缺少某些东西?我记得我在 Visual Studio 2010 上成功编译并运行了相同的应用程序。
不是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
。
您需要包含标题functional
。它在C++11中可用。如果您仍然遇到问题,那么您的编译器可能还不支持 C++11。尝试升级。
你也可以使用 boost::bind:
#include <boost/bind.hpp>