関数のベクトルにPlayerクラスのメンバ関数を追加しようとしています。非標準構文。メンバ関数をベクトルに代入するときに '&'を使用してメンバエラーへのポインタを作成します
これはパラメータとしてKeyboard :: Keyを必要とする関数のベクトルです。
vector<function<void(Keyboard::Key)>> KeyEvent;
は、それから私は私が何かコードsimilairはメンバ関数で正常に動作しますが、ない他のインスタンスを持って
Player::Player() {
KeyEvent.push_back(OnKey); //error: non-standard syntax; use '&' to create a pointer to member
}
void Player::OnKey(Keyboard::Key key) {
//do something with key...
}
プレーヤーの実装を持っています。
vector<function<void()>> UpdateEvent;
UpdateEvent.push_back(HandleInputUpdate);
void HandleInputUpdate() {
for (size_t i = 0; i < pressedKeys.size(); i++) {
for (size_t e = 0; e < KeyEvent.size(); e++) {
KeyEvent[e](pressedKeys[i]);
}
}
}
メンバ関数をこのベクトルに追加することはできますか?そうでない場合、私は何かsimilairを作成できますか?私はC++を非常に新しくしており、C#のアクションを複製できるようにベクターを作成しました。これは私が問題に遭遇するまで私が来たところです。これは早い段階のコンセプトですが、まだベクトルから関数を削除する方法を追加する必要があります。
申し訳ありませんが、&Onkeyを使用すると、残念ながら別のエラーが発生します: '&':バウンドメンバー関数式では不正な操作です。 –