問題タブ [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++ - 奇妙な構文:スコープ演算子(::)の後のアスタリスク?
次のコードスニペットを理解するのを手伝ってください。
(foo.h)
(mytype.h)
ここで宣言しているfoo.hのtypedefは正確には何ですか?ある種の関数ポインタであることがわかりますが、アスタリスクの意味は何ですか?タイプ(??)の参照を解除し、どういうわけか、新しくtypedefされたポインターをMyTypeのタイプ(?!?)に「アタッチ」しようとしているようです。
誰かがここで光を当てることができますか?本当に混乱している:S
c++ - データメンバーへのポインターはそのオフセットですか?
offsetof(mystruct, myfield)
データ メンバー ( ) のオフセットが、 で取得されたメンバー ポインターの生の値と数値的に等しいと仮定しても安全&mystruct::myfield
ですか?それとも実装に依存しますか?
haskell - Haskellにはメンバーを記録するためのポインター/参照がありますか?
、、、および次のような構文を使用して::*
、C++の構造体メンバーへの相対ポインターを作成および参照できます。.*
->*
Haskellでは、次のようなレコードゲッター用の一時的なラベルを簡単に作成できます。
Afaik、しかし、これらのゲッターを次のようなラベルとして使用してレコードを更新することはできません。
各レコードセッターをコーディングせずにこれを行う簡単な方法はありますか?
c++ - 単一の関数ポインターが複数のクラス メンバー関数を指すことはできますか
これが私のアプリケーションによって課される要件です。私はクラス A を持っています。これは、cFunc という関数ポインタを受け入れます。基本的に A の実装では、cFunc を複数回呼び出します。
cFunc ポインター自体は、アプリケーションに応じて異なる関数を指す必要があります。したがって、アプリケーションごとにcFuncと同じ関数定義を持つクラスを作成しますが、クラスのメンバー関数をこのポインターに割り当てることはできません
では、指定された形式のメンバー関数を持つ任意のクラスを使用してクラス A を初期化できるようにするにはどうすればよいでしょうか?
c++ - const メンバーへのポインターを同じ型であるが非 const に安全にキャストできますか?
...メンバー関数へのポインターは奇妙な動物ですが?
C++ クラスを Lua にバインドするライブラリをコーディングしています。特定の型オブジェクトを Lua スタックにプッシュする (そしてそれらを void* にキャストする) ことによって引き起こされる型消去に対処する必要があります。このため、さまざまな種類のデータ (非 const および const オブジェクト、非 const および const メンバー、および将来的には volatile および non volatile のすべてを 2 倍にするなど) のさまざまなテンプレートの過剰な増殖を避けるために、私は管理します。特定のフラグを設定するだけで、実行時に Lua にバインドされたオブジェクトの constness。
今、私はメンバー関数へのポインターを扱っています。これまでの設計に従って、const メンバー関数へのポインターを非 const メンバー関数に安全にキャストし、同じテンプレートを非 const に再利用し、前述のフラグを使用して実行時に constness を処理できれば幸いです。
しかし、これが本当に可能かどうか疑問に思う別のヒントがあります。以下のコードを検討してください。
これらの動物は自分のサイズを変更することさえできますが、特定の状況ではconst_cast
、他のタイプに安全にキャスト (または少なくとも) できるようです (意味がある場合)。
それで、ステップの1つで私の推論はひどく間違っていますか、それともコンパイラに関係なくこれを行うことができますか? const メンバ関数へのポインタで同じようにプレイできますか?
c++ - シグナル オブジェクトを作成するためのファンクター + メンバー ポインター
私はこのコードを持っています:
そして、プロが知っているに違いない多くのコンパイルエラーが発生します。私はこの文脈について少し混乱しています。
私がやりたいことは明らかです。オブジェクトへのポインターとそのメンバー関数の1つへのポインターを渡し、ファンクターを作成してプログラムに渡します。
あなたの助けと「修正」をいただければ幸いです。
ありがとうございました!
c++ - とにかくC++11には、テンプレート内でメンバーポインタータイプを取得する方法はありますか?
これがC++03では不可能だったことは知っていますが、これを可能にする新しいブードゥーがあることを望んでいます。下記参照:
C ++ 11でこれを行う方法はありますか?decltypeは役に立ちますか?
**更新:Vladの例を使用して、私はこのようなものが機能すると考えていました(警告:現在decltypeをサポートするコンパイラを構築しているため、コンパイルしていません)
これは機能しますか?
c++ - メンバー関数へのポインターの受け渡し
そこにはたくさんの例がありますが、それでも私は自分の問題の解決策を理解できないようです。私は持っています
がStartGetFoos()
呼び出されると、Foosを取得するために実行されたリクエストで、コールバックが保存されます。リクエストが完了すると(約30秒かかります)、保存されたコールバックが結果とともに呼び出されます。
このメソッドのシグネチャを変更できません。
そしてどこか他の場所にクラスがあります
c++ - クラス内のC++constexprメンバーポインタ
クラスを使用して、テンプレートデータ構造のすべてのパラメーター、特に侵入型AVLツリーをグループ化しようとしています。ユーザーは次のようなことをします。
しかし、MyAvlTreeParamsのメンバーポインタに問題があります。このサンプルはそれを示しています:
これはclang++3.1で機能しますが、g++4.7.2は次のエラーでリンクできません。
エラーは、構造体Bの定義のどこかに次の宣言を追加することで修正されます(この質問を参照)。
私の場合、これがどのように問題になるかを確認するには、AVLツリーを使用するたびに次のすべてを追加する必要があります。
このような情報のないボイラープレートコードなしでこれを行う方法はありますか、またはパラメーターをグループ化するという同じ目標を達成する別の方法がありますか(つまり、すべてのメンバーをテンプレートパラメーターとして渡すだけではありません)?
c++ - 基本クラスの派生テンプレート クラスが等しいかどうかをチェックする
これは、このプラットフォームでの最初の質問です。不明な点や質問の仕方が適切でなかったら申し訳ありません。
以下のコードは、任意の C++11 コンパイラでコンパイルする必要があります。最小限に抑えてみました。このコードの意味は、この手順で失われる可能性がありますが、クラスと対応するメンバー関数のリストを保持して、それらすべてを同じパラメーターで呼び出すようにしようとしていることは明らかです。
これは完璧に機能します。私の問題は、リストからクラスとメンバー関数を削除する方法がわからないことです。さらに、同じクラスとメンバー関数が 2 回呼び出されることは望ましくありません。これは実質的に同じ問題です。Base 型の 2 つのクラスが等しいかどうかをチェックする必要があります。void ポインターを提供する仮想関数を提供できます。
しかし、それはクラスの同等性をチェックするだけです。このクラスの関数ポインターが等しいかどうかを確認する方法と、その方法がわかりません
のように見える必要があります。
誰かが問題の解決策を知っていますか? それとも、このチェックはできませんか?
ジョー