問題タブ [stdbind]
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.
bind - 複数の引数を持つメンバー関数の std::bind
私はこのコードを持っています
コンパイラ (gcc 4.8.1) から次のエラーが表示されます。
エラーがどこにあるか教えていただけますか?
ありがとう、
マッシモ
c++ - オーバーロードされた関数で std::bind を使用する
を使用してオーバーロードされた関数にパラメーターをバインドする方法がわかりませんstd::bind
。どういうわけかstd::bind
、オーバーロードされた型を推測できません (そのテンプレート パラメーターの場合)。関数をオーバーロードしなければ、すべてが機能します。以下のコード:
私の理解では、オーバーロードされているstd::bind
ため、テンプレートパラメーターを何らかの形で推測することはできませんf
が、それらを指定する方法がわかりません。コード(コメント行)で4つの可能な方法を試しましたが、どれも機能しません。の関数のタイプを指定するにはどうすればよいstd::bind
ですか? どんな助けでも大歓迎です!
c++ - std::function が有効なオブジェクトのメンバーを指しているかどうかを確認する方法はありますか?
私が何を意味するかを示しましょう。
これは以下を出力します:
「function()」を「obj->printNumber()」に置き換えて、通常のように関数を呼び出すと、出力は次のようになります。
あなたがそれを期待するのと同じように。
だから私の質問は、オブジェクトの割り当てが解除されたときに関数を呼び出すことができないことを確認する方法があるかどうかです? これは、スマート ポインターの使用とは関係ありません。通常のポインターと同じように機能します。
c++ - バインド クラス関数オブザーバー c++11
サブジェクト オブザーバー パターンを拡張して、静的関数ではなくクラスから関数を取得しようとしています。シンプルなオブザーバー パターン c++11の juanchopanza EXCELLENT の例に従いまし た。単純な関数ではなく、登録されたコールバックとしてクラス メンバー関数を渡したいと思います。
次のように bind(&class::member,instance) を使用してクラス メンバーを呼び出すことができることに気付きました。
の最初のパラメーターは、それが呼び出されたクラスになるためです。私はまさに私が望むものを手に入れます:
- バー()
- A2_バー()
- A1_バー()
しかし今、私はまた、通知がオブザーバー クラスにいくつかの情報を渡すようにしたいと考えています。したがって、コードを次のように変更しました。
そして今、私は登録したいと思います:
私が欠けているものやこれを行う方法を誰かが助けてくれますか? Observer クラスを関数インターフェイスに追加して、Subject クラスに Observer クラスを認識させたくありません。ありがとう
c++ - std::bind(): 引数として右辺値参照を使用してラムダをバインドします
私はstd::bind
右辺値参照で遊んでいますが、それがどのように機能するのかまだわかりません.次のコードがあります:
をコメントアウトするbind_fun()
場合、またはラムダがではDog&
なくかかる場合Dog&&
、コードは期待される出力で正常に実行されます。をコメント解除したままにするbind_fun()
と、次のコンパイル時エラーが発生します。
私の質問は次のとおりです。
bind_fun()
ラムダが右辺値参照を取るときに呼び出せない(コンパイルしない)のはなぜですか?- ここでラムダの引数として参照と右辺値参照を使用することの違いは何ですか?
c++ - VS2008 から VS2013 への移植中にバインドでエラー C2668 が発生する
コードを VS2008 から VS2013 に移植しようとしていますが、std::bind でエラーが発生します。エラーには、エラー C2668: 'bind' : ambiguous call to overloaded function が表示されます。ここにいくつかのコードがあります:
このコードは Visual Studio 2008 では機能しましたが、Visual Studio 2013 では前述のエラーが発生します。
明らかに、コンパイラは、どのバージョンの TipoLinea() を呼び出そうとしているかを判断するのに苦労しています。getter バージョンの名前を getTipoLinea に変更すると、エラーはなくなります。
関連する場合に備えて、 SomeBase は抽象的ではなく、 CObject (理由はよくわかりません) およびコードのこの部分に関連しないインターフェイスから派生します。
VS2008がこれに問題がない理由と、それを防ぐ方法を誰かが説明できますか(もちろん、関数の名前を変更する以外に)?
c++ - std::bind でテンプレート関数パラメータを使用するには?
for を並列化する関数を作成しようとしています。SFML の Thread と std::bind をテンプレートで使用しています。
これが私が試したものです。
エラーは
no matching function for call to 'bind(<unresolved overloaded function type>, void (*&)(int&), std::vector<int>&, int, int)
本当に重要なことを見逃しましたか?