問題タブ [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.
c++ - メンバー関数への c++ ポインター、__closure の置き換え
しばらく前に、Borland は BCB 環境に C++ 言語の拡張機能を導入しました。この拡張機能は __closure キーワードです。問題は、プレーンな C++ または C++11 でそのような機能を実装できるかどうかです。__closure キーワードに慣れていない場合は、以下のコードのコメントに説明があります。
前もって感謝します!トレノ
c++ - C++ での仮想関数ポインターの比較
サブクラスがその親の仮想関数の 1 つを実装しているかどうかを確認したいとします (これが悪いアーキテクチャのにおいがするかどうかは気にしないでください... これは演習です)。2 つの通常の関数が同一かどうかを確認したい場合は、 を確認するだけで済み&f == &g
ます。
しかし、仮想メンバー関数では、動作が異なります。
DANGER
したがって、私の質問は上記のコードでマークされています。なぜなら?&A::f == &B::f
_ &f != &g
にキャストせずに必要な比較を行う方法はありますかvoid*
(これにより、ノイズの多いコンパイラ警告が発生します-Wpmf-conversions
)。
c++ - 単一の引数テンプレートを持つメンバー関数ラッパー?
メンバー関数をパラメーターとして受け取るテンプレート関数を作成しました。
ただし、メンバー関数パラメーターの一部として使用する前にクラスを宣言する必要があるため、別のパラメーターにする必要があります。
つまり、テンプレートを明示的にインスタンス化するとき (メンバー ポインターを引数として渡すのではなく、これらのラッパーをコンパイル時に生成する必要があります)、使用するときに 2 回入力する必要があります。
なぜ私はtisのようなものを書くことができないのですか:
SomeClass を 2 回入力することなく、C の型とそのメンバー関数ポインターをキャプチャできるようにしますか?
または、C を「自由変数」として宣言し、推論を実行する内部テンプレート引数を持つ外部テンプレートでそれをラップできないのはなぜですか
c++ - データ メンバへのポインタを反転する
こんにちは、クラスのメンバーのオフセットを計算することが (C++ によって) 標準であるかどうかを調べようとしています (それを元に戻すため)。
&(parent_p->*offset)
であることをC++で行うことは合法parent_p
ですnullptr
か?
c++ - メンバーポインタの逆参照
二重リンク リストを実装していますが、メンバー ポインターが指すオブジェクトの真正なメンバーにアクセスしようとすると、segfault が発生します。リンクされたリストは、値と次および前のポインターを持つノードで構成されています
文字列 (これは以前のプロジェクトの必要最小限の実装です):
ノード (これが「ビッグ 3」を実装していないことはわかっています。むしろ、このクラスを最小限に抑えたいと思います):
二重にリンクされたリスト:
主要:
どんな助けでも大歓迎です!
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