[解決済み] メンバ関数でboost bindを使用する方法
2023-06-25 20:10:26
質問
次のコードは cl.exe をクラッシュさせます (MS VS2005) 。
私は、myclassのメソッドを呼び出す関数を作成するためにboost bindを使用しようとしています。
#include "stdafx.h"
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <functional>
class myclass {
public:
void fun1() { printf("fun1()\n"); }
void fun2(int i) { printf("fun2(%d)\n", i); }
void testit() {
boost::function<void ()> f1( boost::bind( &myclass::fun1, this ) );
boost::function<void (int)> f2( boost::bind( &myclass::fun2, this ) ); //fails
f1();
f2(111);
}
};
int main(int argc, char* argv[]) {
myclass mc;
mc.testit();
return 0;
}
私は何を間違えているのでしょうか?
どうすればいいのでしょうか?
代わりに以下を使用してください。
boost::function<void (int)> f2( boost::bind( &myclass::fun2, this, _1 ) );
これは関数オブジェクトに渡された最初のパラメータをプレースホルダを使って関数に転送するものです。
ブースト.バインド
にパラメータをどう扱うか指示する必要があります。この式では、引数を取らないメンバ関数として解釈しようとします。
例えば
ここで
または
ここで
を使用するのが一般的です。
VC8 の cl.exe が定期的にクラッシュすることに注意してください。 Boost.Bind を誤用するとクラッシュします。疑わしい場合は gcc でテストケースを使用すると、おそらくテンプレート パラメータ バインド -のような良いヒントが得られるでしょう。
関連
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み] UbuntuにBoostをインストールする方法
-
[解決済み】Visual Studio 2010でBoostを使用する方法
-
[解決済み] boost::functionとboost::bindのしくみ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み】'std::cout'への未定義の参照