[C++] メンバー関数をcallbackしたい

member 関数をcallbackとして渡したいときの解決方法。

staticな関数はアドレスを取れるが、同じことをmember関数にしてみるとコンパイルエラーとなる。

C++ class member callback simple examples
Using std::function as a delegate in C++11

std::functionとstd::bindを使って解決。
ここで(自分にとって)トリッキーなのはstd::bindの第2引数がthis であること。

std::mem_fnは明示的に引数を増やしたwrapperを生成する。std::bindは自分の中でstd::mem_fn同様の処理をmember関数に対しては行う、との回答。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。