問題タブ [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.
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番目のテンプレート引数は正確に何である必要がありますか?
boost - Boost.Bind 非静的メンバー
Boost.Local が関数コールバックを使用して mo ファイルをロードする次のコードがあります。この関数は私にとっては findMo と呼ばれ、moFinder のプライベート メンバーに追加した副作用を保持できるように、それをオブジェクトにバインドしようとしています。
コンパイルすると、次のエラーが発生します。
エラー: 非静的メンバ関数 'std::vector moFinder::findMo(const std::string&, const std::string&)' の無効な使用</p>
boost::bind を呼び出す行。
このエラーに値するために私は何をしていますか?
c++ - boost::bind と boost::function の使用に関する問題
この質問に続いて
クラスメンバー関数をサードパーティライブラリのメソッドに渡す方法は?
簡単に要約すると、関数へのポインターを、サードパーティ ライブラリの moveset というクラスのコンストラクターに、次の定義で渡す必要があります。
ライブラリで提供される例は、pfInit などのグローバル関数を単純に定義するもので、それらを f、g、および h と呼びます。次に、コントローラ クラス内から smc::moveset Moveset(f,g,h) を呼び出します。
boost:bind を使用して提案を実装しようとしました。残念ながら、私はこれを機能させるのに苦労しています。
コントローラークラスで
結果のコンパイラエラーは、
どんな助けでも大歓迎です
c++ - 「boost::function」のクラスinstance(object)ポインタにアクセスするにはどうすればよいですか?
このような状況で、以下のように「func」からinstのポインタ(&inst)またはアドレスにアクセスしたいと思います。
どのようにできるのか?
boost-bind - Boostを使用してクラスメンバーを関数ポインタのように動作させる方法
クラスメンバー関数を関数ポインタのように動作させたいのですが。自分のクラスを既存のコードに統合するには、この動作が必要です。
これはBoost::functionとBoost::bindを使用して可能かもしれないようですが、私はそれを機能させることができないようです。次のコードは、実装をテストするために使用している最小限の例です。main()プログラムの最後の行は、私がやりたいことです。
どんな助けでも大歓迎です。私はg++とBoost1.46を使用しています。
c++ - ファンクターによるブースト信号 2 接続の切断
Boost.Signals2 を使用するために、別のシステムを使用するコードを変換しようとしています。古いコードでは、通常の関数ポインターをファンクターとして使用していました。接続はファンクターで特定のメソッドを呼び出すことによって行われ、切断はまったく同じファンクターで別のメソッドを呼び出すことによって行われました。Signals2 で最も効率的な方法ではないことはわかっていますが、互換性の理由から、これを引き続きサポートしたいと考えています。
上記の (簡略化された) コードは接続に対して正常に機能しますが、Unregister メソッドは VS2008 でコンパイルされません。
では、どういうわけか、関数オブジェクトをそれ自体と比較することはできませんか? また、UpdateCallback に slot_function_type を使用してみました。また、同じシグネチャを持つ boost::function として明示的に指定しました。どちらも代わりにこのエラーを生成しました:
ですから、選択肢が少なすぎるものから多すぎるものになったと思います。これを解決するにはどうすればよいですか?
c++ - テンプレートを含むヘッダー ファイルの「スコープ内で宣言されていません」エラー
そこで、次のヘッダー ファイルを作成します。
ただし、コンパイル時にエラーがスローされますが、その理由はわかりません。テストは明らかに範囲内です。
orに置き換えtest<a>
ても機能しません。boost:ref(test<a>)
&test<a>
何か案は?
c++ - C++テンプレートパラメータの控除が機能していません
との間の接続をオーバーライドする必要がありboost::signals2::signal
ますboost::function
。この目的のために、次のテンプレート関数を作成しました。
bind
これをできるだけシンプルに活用したいと思います。同様の問題に関する投稿で読んだことから、テンプレートパラメータは関数の引数から推測する必要があります。しかし、私の場合、明示的なパラメーターがない場合、それは機能していません。
私は何かが足りないのですか?
明示的なテンプレートパラメータを回避するための回避策はありますか?
c++ - "関数の戻り値をラップしようとすると、「call operator」エラーが発生します
ファンクターを引数として取り、ファンクターを呼び出してから、その戻り値を にラップして返す関数を作成しようとしていますboost::shared_ptr
。
以下はコンパイルを拒否し、私はすべてアイデアがありません。「std::vector< std::string > は呼び出し演算子を提供していません」と表示されます (大まかに)。Mac OS X で Clang 3.1 を使用しています。
これは私がそれを使用しようとしているコンテキストです:
編集: これは完全な自己完結型のテスト ケースです。このコードは同じエラーでコンパイルに失敗し、私の人生では何が問題なのかわかりません:
エラー出力は次のとおりです。
ここにいくつかの手がかりがあります。次のコードは問題なくコンパイルされますが、これは私が必要とするコードではないため、役に立ちません:)
c++ - エラー: boost-bind を boost-function に使用する場合の 'operator[]' のあいまいなオーバーロード
入力文字列の値に基づいて、フィルター ファンクターをクラスのメンバー メソッドの 1 つにマップしようとしています。
そして私のエラー:
編集:私の質問に対する提案された回答の提案で、私の例を少し単純化しました。Boost::bind への引数として MyClass() を渡す必要があることが示唆されました。これにより、投稿されたコード セグメントのコンパイル エラーが解決されます。ただし、コード構造を考えると、それを行うことはできません。私が行ったことが、boost::bind ドキュメントのこの例と異なる理由を知りたいです。
_1 パラメーターは、MyClass() で明示的に提供することが提案されている暗黙の 'this' を処理するべきではありませんか?