問題タブ [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.

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

c++ - クラスメンバーへのポインタ

私はBoostSpiritパーサーを使用していますが、パーサーが解析しているため、セマンティックアクションはクラスParserActionsのインスタンスに反映されます。

パーサーのコードは次のとおりです(関連部分)

0 投票する
4 に答える
445 参照

c++ - C++で異なるクラスのメンバー関数ポインタを保持できるのはどの型ですか?

異なるクラスのメンバー関数ポインターを保持する配列が必要です。配列を定義するにはどうすればよいですか?

コードは次のようになります。

試してみvoid*ましたが、うまくいきません。

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

c++ - 階層内のメンバー関数ポインター

インターフェイスを定義するライブラリを使用しています:

そして私は小さな階層を持っています

のメンバー関数でderived、呼び出したい

しかし、実際には;&derived::fooのメンバ関数ポインタのようです。basegccが吐き出す

thisに明示的にキャストすることで、これを回避できますbase *。しかし、コンパイラが呼び出しを一致できないのはなぜですかdesttype = base(derived *暗黙的に にキャストできるためbase *)?

また、メンバー関数のポインターで ないのはなぜですか?&derived::fooderived

0 投票する
5 に答える
4810 参照

c++ - メンバー関数への関数ポインター

これにはいくつかの重複がありますが、メンバー変数を使用してポインターを(に)格納できる理由は誰も説明していませんがFOO、ローカル変数(のコメント部分にある)で試してみると、BAR違法です。誰かがこれを説明できますか?

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

c++ - メンバ関数ポインタが正しくありません

テンプレート化された SpecialisedRedBlackTree クラスがあります。

私の月のクラスはそうではありません。

私の Month クラスには、SpecializedRedBlackTree のインスタンスであるプライベート メンバーがあります。

ご覧のとおり、Day クラス/オブジェクトが必要です (用語が間違っている場合は修正してください)。

私の Month クラスには、メソッド関数ポインターをこのメソッドに渡すメソッドがあります。

しかし、bool (T, T) を期待するテンプレート化されたクラスに bool (Day, Day) ポインターを渡しているためです。

T はこの .... テンプレートの一部です

何かアドバイス?

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

c++ - (メンバー?)関数へのc++ジェネリックポインタ

関数へのジェネリックポインタを宣言できないようです。

次の2つの関数を呼び出す必要があります。

そしてこれらの2つの関数呼び出し元:

これらをboost::bindで使用してメンバー関数を呼び出そうとすると、コンパイルエラーが発生します。

これは機能します:

これはしません:

これはどのように行われることになっていますか?

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

c++ - C++のhierachy内のメンバー関数へのポインターの処理

次の状況をコーディングしようとしています。イベントを処理するためのフレームワークを提供する基本クラスがあります。そのために、メンバー関数へのポインターの配列を使用しようとしています。次のようになります。

次に、ユーザーはこのクラスから他のクラスを派生させ、ハンドラーを提供することになっています。

DEH::func_tをEH::func_tに変換できないため、このコードはコンパイルされません。それは私には完全に理にかなっています。this私の場合、下のオブジェクトは実際にはDEHであるため、変換は安全です。だから私はそのようなものが欲しいです:

そして代わりに

DEH :: DEH()に置く

それで、最後に質問(私に十分な時間がかかりました...):それらのラッパー(のようなEH::DEH_handle_event_5_wrapper)を自動的に作成する方法はありますか?または同様のことをするために?この状況に対する他の解決策はありますか?

ありがとう。

0 投票する
6 に答える
611 参照

c++ - 仮想メンバー関数へのポインターは、基底クラスのコンストラクターで有効ですか?

私の質問は、基本クラスのコンストラクターから仮想メンバー関数を呼び出すことではなく、仮想メンバー関数へのポインターが基本クラスのコンストラクターで有効かどうかです。

以下を考えると

これにより、準拠しているすべての C++ コンパイラに対して "In B::vmember()" が生成されますか?

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

c++ - メンバー関数へのポインター、テンプレートと継承の混同

任意のデータを保持し、関連するクラスのメンバー関数を呼び出す汎用の「コールバック」オブジェクトを作成しようとしています。内部ポリシーにより、Boost を使用できません。

コールバック オブジェクトは次のようになります。

そして、それが動作するクラス:

次のテストは期待どおりに機能します。

ここまでは順調ですね。

ただし、同僚がCallbackを使用する代わりにクラスから派生しようとするtypedefと、互換性のないポインターが原因でコンパイル エラーが発生しました。

Callback クラスで「奇妙な繰り返しテンプレート パターン」を使用してみましたが、派生クラスを動作させることができましたが、typedefメソッドを使用するコードが壊れました。

私の質問は:

クラスのユーザー側で余分な作業を必要とせずに、両方のケースで動作するようにクラスを変更するにはどうすればよいですか?Callback

0 投票する
4 に答える
1518 参照

c++ - ベア関数ポインタでメンバー関数を呼び出す

オブジェクトとメンバーを指すベア関数ポインターがある場合、メンバー関数を呼び出す最良の方法は何ですか? thiscall基本的に、呼び出し規約で関数ポインターを呼び出したいと思います。

背景: 共有ライブラリ内のシンボルを動的に検索し、ファクトリ関数ポインターと呼び出したい特定のメンバー関数へのポインターを取得しています。メンバー関数自体は仮想ではありません。共有ライブラリを制御することはできません。バイナリを持っているだけです。

例:

現在union、関数ポインターをメンバー関数へのポインターに変換するために を使用しています。それは醜く、コンパイラの実装の詳細への依存関係を作成します。