問題タブ [member-function-pointers]
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++ - クラスメンバーへのポインタ
私はBoostSpiritパーサーを使用していますが、パーサーが解析しているため、セマンティックアクションはクラスParserActionsのインスタンスに反映されます。
パーサーのコードは次のとおりです(関連部分)
c++ - C++で異なるクラスのメンバー関数ポインタを保持できるのはどの型ですか?
異なるクラスのメンバー関数ポインターを保持する配列が必要です。配列を定義するにはどうすればよいですか?
コードは次のようになります。
試してみvoid*
ましたが、うまくいきません。
c++ - 階層内のメンバー関数ポインター
インターフェイスを定義するライブラリを使用しています:
そして私は小さな階層を持っています
のメンバー関数でderived
、呼び出したい
しかし、実際には;&derived::foo
のメンバ関数ポインタのようです。base
gccが吐き出す
this
に明示的にキャストすることで、これを回避できますbase *
。しかし、コンパイラが呼び出しを一致できないのはなぜですかdesttype = base
(derived *
暗黙的に にキャストできるためbase *
)?
また、メンバー関数のポインターでは ないのはなぜですか?&derived::foo
derived
c++ - メンバー関数への関数ポインター
これにはいくつかの重複がありますが、メンバー変数を使用してポインターを(に)格納できる理由は誰も説明していませんがFOO
、ローカル変数(のコメント部分にある)で試してみると、BAR
違法です。誰かがこれを説明できますか?
c++ - メンバ関数ポインタが正しくありません
テンプレート化された SpecialisedRedBlackTree クラスがあります。
私の月のクラスはそうではありません。
私の Month クラスには、SpecializedRedBlackTree のインスタンスであるプライベート メンバーがあります。
ご覧のとおり、Day クラス/オブジェクトが必要です (用語が間違っている場合は修正してください)。
私の Month クラスには、メソッド関数ポインターをこのメソッドに渡すメソッドがあります。
しかし、bool (T, T) を期待するテンプレート化されたクラスに bool (Day, Day) ポインターを渡しているためです。
T はこの .... テンプレートの一部です
何かアドバイス?
c++ - (メンバー?)関数へのc++ジェネリックポインタ
関数へのジェネリックポインタを宣言できないようです。
次の2つの関数を呼び出す必要があります。
そしてこれらの2つの関数呼び出し元:
これらをboost::bindで使用してメンバー関数を呼び出そうとすると、コンパイルエラーが発生します。
これは機能します:
これはしません:
これはどのように行われることになっていますか?
c++ - C++のhierachy内のメンバー関数へのポインターの処理
次の状況をコーディングしようとしています。イベントを処理するためのフレームワークを提供する基本クラスがあります。そのために、メンバー関数へのポインターの配列を使用しようとしています。次のようになります。
次に、ユーザーはこのクラスから他のクラスを派生させ、ハンドラーを提供することになっています。
DEH::func_tをEH::func_tに変換できないため、このコードはコンパイルされません。それは私には完全に理にかなっています。this
私の場合、下のオブジェクトは実際にはDEHであるため、変換は安全です。だから私はそのようなものが欲しいです:
そして代わりに
DEH :: DEH()に置く
それで、最後に質問(私に十分な時間がかかりました...):それらのラッパー(のようなEH::DEH_handle_event_5_wrapper
)を自動的に作成する方法はありますか?または同様のことをするために?この状況に対する他の解決策はありますか?
ありがとう。
c++ - 仮想メンバー関数へのポインターは、基底クラスのコンストラクターで有効ですか?
私の質問は、基本クラスのコンストラクターから仮想メンバー関数を呼び出すことではなく、仮想メンバー関数へのポインターが基本クラスのコンストラクターで有効かどうかです。
以下を考えると
これにより、準拠しているすべての C++ コンパイラに対して "In B::vmember()" が生成されますか?
c++ - メンバー関数へのポインター、テンプレートと継承の混同
任意のデータを保持し、関連するクラスのメンバー関数を呼び出す汎用の「コールバック」オブジェクトを作成しようとしています。内部ポリシーにより、Boost を使用できません。
コールバック オブジェクトは次のようになります。
そして、それが動作するクラス:
次のテストは期待どおりに機能します。
ここまでは順調ですね。
ただし、同僚がCallback
を使用する代わりにクラスから派生しようとするtypedef
と、互換性のないポインターが原因でコンパイル エラーが発生しました。
Callback クラスで「奇妙な繰り返しテンプレート パターン」を使用してみましたが、派生クラスを動作させることができましたが、typedef
メソッドを使用するコードが壊れました。
私の質問は:
クラスのユーザー側で余分な作業を必要とせずに、両方のケースで動作するようにクラスを変更するにはどうすればよいですか?Callback
c++ - ベア関数ポインタでメンバー関数を呼び出す
オブジェクトとメンバーを指すベア関数ポインターがある場合、メンバー関数を呼び出す最良の方法は何ですか? thiscall
基本的に、呼び出し規約で関数ポインターを呼び出したいと思います。
背景: 共有ライブラリ内のシンボルを動的に検索し、ファクトリ関数ポインターと呼び出したい特定のメンバー関数へのポインターを取得しています。メンバー関数自体は仮想ではありません。共有ライブラリを制御することはできません。バイナリを持っているだけです。
例:
現在union
、関数ポインターをメンバー関数へのポインターに変換するために を使用しています。それは醜く、コンパイラの実装の詳細への依存関係を作成します。