2017-09-14 4 views
-1

用ブレース囲まれた初期化子リストを変換できませんでした私のイニシアチブのリストは?は、私は次のセットアップをしているのstdでのstd ::ペア::マップ

+0

ただし、キャプチャして、現在このTransTableメンバーを初期化しているインスタンスを格納するためのラムダを使用することができますか?それは定義されていないので、エラーはこれから来ます。 –

+0

申し訳ありません、それを含めるのを忘れてしまった – Reza

答えて

3

あなたの質問にはMCVEがありませんが、エラーメッセージは十分に明確です。reactionstd::function<void()>のtypedefのようです。 &Node::connectのようなメンバ関数ポインタは、std::function<void()>に変換することはできません。なぜなら、後者には、実際に関数を呼び出すための任意の種類のthisパラメータがないからです。 「反応」とは何である

const std::map<std::pair<Status, Event>, reaction> TransTable = { 
    {{DISCONNECTED, CONNECT}, [this] { connect(); }}, 
    {{CONNECTING, RECEIVE}, [this] { receive(); }} 
}; 
関連する問題