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