問題タブ [member-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 投票する
2 に答える
2122 参照

c++ - メンバー関数への c++ ポインター、__closure の置き換え

しばらく前に、Borland は BCB 環境に C++ 言語の拡張機能を導入しました。この拡張機能は __closure キーワードです。問題は、プレーンな C++ または C++11 でそのような機能を実装できるかどうかです。__closure キーワードに慣れていない場合は、以下のコードのコメントに説明があります。

前もって感謝します!トレノ

0 投票する
0 に答える
394 参照

c++ - C++ での仮想関数ポインターの比較

サブクラスがその親の仮想関数の 1 つを実装しているかどうかを確認したいとします (これが悪いアーキテクチャのにおいがするかどうかは気にしないでください... これは演習です)。2 つの通常の関数が同一かどうかを確認したい場合は、 を確認するだけで済み&f == &gます。

しかし、仮想メンバー関数では、動作が異なります。

DANGERしたがって、私の質問は上記のコードでマークされています。なぜなら?&A::f == &B::f_ &f != &gにキャストせずに必要な比較を行う方法はありますかvoid*(これにより、ノイズの多いコンパイラ警告が発生します-Wpmf-conversions)。

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

c++ - 単一の引数テンプレートを持つメンバー関数ラッパー?

メンバー関数をパラメーターとして受け取るテンプレート関数を作成しました。

ただし、メンバー関数パラメーターの一部として使用する前にクラスを宣言する必要があるため、別のパラメーターにする必要があります。

つまり、テンプレートを明示的にインスタンス化するとき (メンバー ポインターを引数として渡すのではなく、これらのラッパーをコンパイル時に生成する必要があります)、使用するときに 2 回入力する必要があります。

なぜ私はtisのようなものを書くことができないのですか:

SomeClass を 2 回入力することなく、C の型とそのメンバー関数ポインターをキャプチャできるようにしますか?

または、C を「自由変数」として宣言し、推論を実行する内部テンプレート引数を持つ外部テンプレートでそれをラップできないのはなぜですか

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

c++ - データ メンバへのポインタを反転する

こんにちは、クラスのメンバーのオフセットを計算することが (C++ によって) 標準であるかどうかを調べようとしています (それを元に戻すため)。

&(parent_p->*offset)であることをC++で行うことは合法parent_pですnullptrか?

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

c++ - メンバーポインタの逆参照

二重リンク リストを実装していますが、メンバー ポインターが指すオブジェクトの真正なメンバーにアクセスしようとすると、segfault が発生します。リンクされたリストは、値と次および前のポインターを持つノードで構成されています

文字列 (これは以前のプロジェクトの必要最小限の実装です):

ノード (これが「ビッグ 3」を実装していないことはわかっています。むしろ、このクラスを最小限に抑えたいと思います):

二重にリンクされたリスト:

主要:

どんな助けでも大歓迎です!

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

c++ - 派生クラスの c++ キャスト メンバ ポインタを基底クラス ポインタに

私は現在 HttpServer に取り組んでおり、次の問題があります。

コントローラーを登録したいのですが、リクエストを受け取ったときに、それらのコントローラーのいずれかにリクエストされた URL のハンドラーがあるかどうかを確認し、ハンドラーを呼び出したいと考えています。

これまでのところうまくいきましたが、C ++で解決する方法がわかりません。PHPでは簡単です。

Easteregg コントローラー関数 getControllerCallbacks で、使用可能なコールバックを返したいのですが、派生クラスのメンバー関数ポインターを基本クラス (コントローラー) のメンバー関数ポインター (EastereggController) にキャストできないため、コンパイルできません。ControllerCallback を「テンプレート クラス」にすることを考えましたが、ControllerHandler 内のコントローラーのクラスを知る必要がありますが、std::vector があるためわかりません。

私はC++にかなり慣れていないので、何かを見落としているかもしれません。

これは私のコードです:

Controller.h

EastereggController.h

EastereggController.cpp

ControllerCallback.h

ControllerHandler.h

ControllerHandler.cpp