14

私はminwgコンパイラでnetbeans 7.2.1を使用しています。アプリケーションをビルドしようとすると、次のエラー メッセージが表示されます。

エラー: 名前空間 'std' の '関数' に型の名前がありません

エラー: 'bind' は 'std' のメンバーではありません

ファイルの先頭に Functional.h を含めましたが、「関数」と「バインド」を std::function と std::bind の形式で使用しています。

問題はどこだ?それはコンパイラにありますか、それとも何か不足していますか? Visual Studio 2010 で同じアプリケーションを正常にコンパイルして実行したことを覚えています。

4

3 に答える 3

17

そうではありませんfunctional.h、ただfunctionalです。

#include <functional> //without .h

C++11 のみが付属していることstd::functionに注意してください。std::bindしたがって、まだ行っていない場合は、コンパイラをアップグレードする必要があるかもしれません。

-std=c++11また、オプションを使用してコードをコンパイルします。

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

コンパイラをアップグレードした場合、これは機能するはずです。コンパイラが少し古い場合は、-std=c++0x代わりに試すこともできます。

于 2013-01-10T15:13:55.157 に答える
6

ヘッダーを含める必要がありますfunctionalC++11で利用できます。それでも問題が解決しない場合は、コンパイラがまだ C++11 をサポートしていない可能性があります。アップグレードしてみてください。

于 2013-01-10T15:13:15.540 に答える
1

boost::bind も使用できます。

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