C++ 11で単純なプログラムをコンパイルできません。 こちらをご覧くださいhttp://cpp.sh/9muxf。C++ std :: function operator =
#include <functional>
#include <iostream>
#include <exception>
#include <tuple>
#include <map>
using namespace std;
typedef int Json;
typedef string String;
class Integer/*: public PluginHelper*/
{
public:
Json display(const Json& in)
{
cout << "bad" << endl;
return Json();
}
map<String, function<Json(Json)>>* getSymbolMap()
{
static map<String, function<Json(Json)>> x;
auto f = bind(&Integer::display, this);
x["display"] = f;
return nullptr;
}
};
問題は、私がここで何が起こっているのかを理解する:)作る場合は、大きな助けになるラインx["display"] = f;
で来ています。 std::function
はコピーできませんか?
コンパイラは恐らくエラーメッセージを発していましたか? – juanchopanza
ラムダ/クロージャがあるのでバインドが役に立たないと思っている人もいるので、 'auto f = [this](Json j) - > Json {return display(j);};'を代わりに使用するといいです – PeterT
'#include ' –