問題タブ [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::function を使用しています。ポインターをキャッチする関数は、さまざまなシグネチャに対してオーバーロードされます。例えば:
今、私はそこにいくつかのクラスメソッドポインタを渡したい:
c++ - ブースト機能の収納
さまざまなboost::functionオブジェクトのリストを保存する必要があります。これを提供するために、私はboost::anyを使用しています。さまざまな関数のシグネチャを取得し、それらを任意の関数にパックしてから、指定されたタイプの特別なマップに挿入する関数がいくつかあります。コードは次のとおりです。
今、私はマップブースト機能を持っており、将来それを認識するために、列挙型から与えられたタイプの任意のものにパックされています。次に、指定された関数を呼び出す必要があります。いずれからのキャストも機能しません:
これはキャストされず、実行中に例外が発生します。
boost :: functionオブジェクトを元に戻すことは可能ですか?
c++ - boost::function_baseを介してboost::functionを呼び出す
XMLファイルが解析されるときにオブジェクトで呼び出される必要がある関数のunordered_mapがあります。
boost::functionにはboost::function_baseという名前の基本クラスがあることがわかりましたが、関数の署名がないため、予想どおりに呼び出すことができません。
これらの関数はすべてセッター関数であるため、voidを返し、不明なタイプのパラメーターを1つだけ持つことを保証できます。
私が避けようとしているif-else-ifブランチ以外のタイプを解決するためのより良い方法はありますか?
c++ - boost::関数のメモリ使用量
boost::function
タイマーマネージャーの実装で使用することを検討しています。スケジュール タイマーで aboost::function
が渡され、タイマーの期限切れでコールバックが実行されます。時間は非常に高い頻度でスケジュール/キャンセルされます (~1000 アクション/秒)。
しかし、ヒープメモリの使用量が心配ですboost::function
。
たとえば、ライブラリのパフォーマンス要件はおそらく非常に高いですが、多くをboost::asio
使用していることを私は知っています。boost::function
どう思いますか?
c++ - ブーストに一般的な「クリーンアップ」クラスはありますか?
私は単にこれを行うクラスが欲しい:
目的は、削除されたときに func を呼び出すために、この「クリーンアップ」を行うことです。cleanup は shared_ptr として渡されます。
また、boost::shared_ptr でカスタムのデリータを使用することも検討しました。おそらく、boost::shared_ptr を使用して、NULL で作成し、func() を取得して、無視するパラメーターを取得できます。
このすべての目的は、最後の参照がスコープ外になったときにクラスのデストラクタに実行させたいステップを抽象化することです (実際には、クラスがそのコンテナについて知る必要なく、それを保持しているコンテナから自分自身を削除します)。
shared_ptr でそれを行う場合、次のいずれかを渡す可能性があります。
ここで、func はパラメーターを取る必要があります。ポインターが NULL の場合にデリータが常に呼び出されるかどうかも 100% 確信が持てないため、おそらく別のポインターを使用して「乱雑」な外観になるようにする必要があります。
これを処理する標準的な方法はありますか?そうでない場合、最善の方法は何ですか?
c++ - boost::functionと複数の引数のmember-function
私はboost::functionオブジェクトの次の定義を持っています:
この関数を構造体コンストラクター引数として渡します。
struct add_node_value_visitor
ここで、を次の関数に渡す必要がありますがboost::function<T>
、は2 argメンバー関数を受け入れません。ドキュメントでは、boost :: bindを使用する必要があると書かれていますが、それをどのように行うかはわかりません。また、boost::apply_visitor関数を満たす必要があります。
誰かアイデアはありますか?
c++ - boost::function をシリアライズして message_queue に送信する方法
boost::interprocess::message_queue で共有したいので、boost::serialize を使用して実際に boost::function をシリアル化しようとしています。それを行う方法は 1 つしかありません。非侵入型の boost::serialize を使用することです。
また、vtable と functor をシリアル化する必要があります。試していません。動作しているかどうかはわかりません。
boost::function を適切な方法でシリアル化する方法はありますか?
ありがとうございました。
c++ - メンバー関数へのboost::関数の割り当て
boost::function
を使用して、コールバックとして機能する関数に渡したいと思います。メンバー関数の割り当てに問題があるようです。
渡したい関数は静的関数です(別のスレッドで呼び出されるため)。
これはResolverCommunicator
クラス内にありますが、私のコンパイラは次のことについて文句を言います。
call_back
次に、別のスレッドで呼び出される静的関数に渡します。
誰かが何が悪いのか知っていますか?
編集:
私は答えが言うようにやったが、今私はこのエラーを受け取る:
c++ - shared_ptrを呼び出す方法ループ内のベクトルから?
boost::signalを使用するコールバックシステムが機能しています。シグナルにshared_ptrのベクトルを使用する、より柔軟で効率的なコールバックマネージャーに拡張しています。コールバックを正常に作成してリストに追加することはできましたが、シグナルを実際に実行する方法がわかりません。
このコードはすべて機能します。ベクターを使用して、shared_ptr内から呼び出しを実行する方法がわかりません。どんな助けでもきちんとしています。前もって感謝します。
c++ - boost::bindと一時変数への参照
私がメソッドを持っているとしましょう:
boost :: functionを作成できますか:
f
ここで、tempは、が呼び出される前に削除されたchar*です。