問題タブ [boost-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2268 参照

c++ - boost::bind関数をstd::mapに保存する

私は、すべてが効果的に同じことを行う一連の関数を作成しています。

ここで、Fooはクラスです。これまでのところ、すべてかなり単純です。今、私はこれに効果的に多くのバリアントを作成したいのですが、異なるセットにバインドされています。次に、これらをstd::mapに保存します。したがって、boost::bindとboost::functionを使用して、次のようにします。

私が抱えている問題は、マップのタイプを定義しようとしていることです。私はそれが次のようになると思いました:

しかし、これをMSVC 9.0でコンパイルすると、次のようになりerror C2582: 'operator =' function is unavailable in 'boost::function<Signature>'ます。

マップする2番目のテンプレート引数は正確に何である必要がありますか?

0 投票する
1 に答える
5354 参照

boost - Boost.Bind 非静的メンバー

Boost.Local が関数コールバックを使用して mo ファイルをロードする次のコードがあります。この関数は私にとっては findMo と呼ばれ、moFinder のプライベート メンバーに追加した副作用を保持できるように、それをオブジェクトにバインドしようとしています。

コンパイルすると、次のエラーが発生します。

エラー: 非静的メンバ関数 'std::vector moFinder::findMo(const std::string&, const std::string&)' の無効な使用</p>

boost::bind を呼び出す行。

このエラーに値するために私は何をしていますか?

0 投票する
1 に答える
405 参照

c++ - boost::bind と boost::function の使用に関する問題

この質問に続いて

クラスメンバー関数をサードパーティライブラリのメソッドに渡す方法は?

簡単に要約すると、関数へのポインターを、サードパーティ ライブラリの moveset というクラスのコンストラクターに、次の定義で渡す必要があります。

ライブラリで提供される例は、pfInit などのグローバル関数を単純に定義するもので、それらを f、g、および h と呼びます。次に、コントローラ クラス内から smc::moveset Moveset(f,g,h) を呼び出します。

boost:bind を使用して提案を実装しようとしました。残念ながら、私はこれを機能させるのに苦労しています。

コントローラークラスで

結果のコンパイラエラーは、

どんな助けでも大歓迎です

0 投票する
3 に答える
717 参照

c++ - 「boost::function」のクラスinstance(object)ポインタにアクセスするにはどうすればよいですか?

このような状況で、以下のように「func」からinstのポインタ(&inst)またはアドレスにアクセスしたいと思います。

どのようにできるのか?

0 投票する
1 に答える
79 参照

boost-bind - Boostを使用してクラスメンバーを関数ポインタのように動作させる方法

クラスメンバー関数を関数ポインタのように動作させたいのですが。自分のクラスを既存のコードに統合するには、この動作が必要です。

これはBoost::functionとBoost::bindを使用して可能かもしれないようですが、私はそれを機能させることができないようです。次のコードは、実装をテストするために使用している最小限の例です。main()プログラムの最後の行は、私がやりたいことです。

どんな助けでも大歓迎です。私はg++とBoost1.46を使用しています。

0 投票する
1 に答える
2203 参照

c++ - ファンクターによるブースト信号 2 接続の切断

Boost.Signals2 を使用するために、別のシステムを使用するコードを変換しようとしています。古いコードでは、通常の関数ポインターをファンクターとして使用していました。接続はファンクターで特定のメソッドを呼び出すことによって行われ、切断はまったく同じファンクターで別のメソッドを呼び出すことによって行われました。Signals2 で最も効率的な方法ではないことはわかっていますが、互換性の理由から、これを引き続きサポートしたいと考えています。

上記の (簡略化された) コードは接続に対して正常に機能しますが、Unregister メソッドは VS2008 でコンパイルされません。

では、どういうわけか、関数オブジェクトをそれ自体と比較することはできませんか? また、UpdateCallback に slot_function_type を使用してみました。また、同じシグネチャを持つ boost::function として明示的に指定しました。どちらも代わりにこのエラーを生成しました:

ですから、選択肢が少なすぎるものから多すぎるものになったと思います。これを解決するにはどうすればよいですか?

0 投票する
1 に答える
1701 参照

c++ - テンプレートを含むヘッダー ファイルの「スコープ内で宣言されていません」エラー

そこで、次のヘッダー ファイルを作成します。

ただし、コンパイル時にエラーがスローされますが、その理由はわかりません。テストは明らかに範囲内です。

orに置き換えtest<a>ても機能しません。boost:ref(test<a>)&test<a>

何か案は?

0 投票する
1 に答える
283 参照

c++ - C++テンプレートパラメータの控除が機能していません

との間の接続をオーバーライドする必要がありboost::signals2::signalますboost::function。この目的のために、次のテンプレート関数を作成しました。

bindこれをできるだけシンプルに活用したいと思います。同様の問題に関する投稿で読んだことから、テンプレートパラメータは関数の引数から推測する必要があります。しかし、私の場合、明示的なパラメーターがない場合、それは機能していません。

私は何かが足りないのですか?
明示的なテンプレートパラメータを回避するための回避策はありますか?

0 投票する
3 に答える
16405 参照

c++ - "関数の戻り値をラップしようとすると、「call operator」エラーが発生します

ファンクターを引数として取り、ファンクターを呼び出してから、その戻り値を にラップして返す関数を作成しようとしていますboost::shared_ptr

以下はコンパイルを拒否し、私はすべてアイデアがありません。「std::vector< std::string > は呼び出し演算子を提供していません」と表示されます (大まかに)。Mac OS X で Clang 3.1 を使用しています。

これは私がそれを使用しようとしているコンテキストです:

編集: これは完全な自己完結型のテスト ケースです。このコードは同じエラーでコンパイルに失敗し、私の人生では何が問題なのかわかりません:

エラー出力は次のとおりです。

ここにいくつかの手がかりがあります。次のコードは問題なくコンパイルされますが、これは私が必要とするコードではないため、役に立ちません:)

0 投票する
1 に答える
819 参照

c++ - エラー: boost-bind を boost-function に使用する場合の 'operator[]' のあいまいなオーバーロード

入力文字列の値に基づいて、フィルター ファンクターをクラスのメンバー メソッドの 1 つにマップしようとしています。

そして私のエラー:

編集:私の質問に対する提案された回答の提案で、私の例を少し単純化しました。Boost::bind への引数として MyClass() を渡す必要があることが示唆されました。これにより、投稿されたコード セグメントのコンパイル エラーが解決されます。ただし、コード構造を考えると、それを行うことはできません。私が行ったことが、boost::bind ドキュメントのこの例と異なる理由を知りたいです。

_1 パラメーターは、MyClass() で明示的に提供することが提案されている暗黙の 'this' を処理するべきではありませんか?