問題タブ [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 に答える
818 参照

c++ - 奇妙な構文:スコープ演算子(::)の後のアスタリスク?

次のコードスニペットを理解するのを手伝ってください。

(foo.h)

(mytype.h)

ここで宣言しているfoo.hのtypedefは正確には何ですか?ある種の関数ポインタであることがわかりますが、アスタリスクの意味は何ですか?タイプ(??)の参照を解除し、どういうわけか、新しくtypedefされたポインターをMyTypeのタイプ(?!?)に「アタッチ」しようとしているようです。

誰かがここで光を当てることができますか?本当に混乱している:S

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

c++ - データメンバーへのポインターはそのオフセットですか?

offsetof(mystruct, myfield)データ メンバー ( ) のオフセットが、 で取得されたメンバー ポインターの生の値と数値的に等しいと仮定しても安全&mystruct::myfieldですか?それとも実装に依存しますか?

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

haskell - Haskellにはメンバーを記録するためのポインター/参照がありますか?

、、、および次のような構文を使用して::*、C++の構造体メンバーへの相対ポインターを作成および参照できます。.*->*

Haskellでは、次のようなレコードゲッター用の一時的なラベルを簡単に作成できます。

Afaik、しかし、これらのゲッターを次のようなラベルとして使用してレコードを更新することはできません。

各レコードセッターをコーディングせずにこれを行う簡単な方法はありますか?

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

c++ - 単一の関数ポインターが複数のクラス メンバー関数を指すことはできますか

これが私のアプリケーションによって課される要件です。私はクラス A を持っています。これは、cFunc という関数ポインタを受け入れます。基本的に A の実装では、cFunc を複数回呼び出します。

cFunc ポインター自体は、アプリケーションに応じて異なる関数を指す必要があります。したがって、アプリケーションごとにcFuncと同じ関数定義を持つクラスを作成しますが、クラスのメンバー関数をこのポインターに割り当てることはできません

では、指定された形式のメンバー関数を持つ任意のクラスを使用してクラス A を初期化できるようにするにはどうすればよいでしょうか?

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

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 メンバ関数へのポインタで同じようにプレイできますか?

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

c++ - シグナル オブジェクトを作成するためのファンクター + メンバー ポインター

私はこのコードを持っています:

そして、プロが知っているに違いない多くのコンパイルエラーが発生します。私はこの文脈について少し混乱しています。

私がやりたいことは明らかです。オブジェクトへのポインターとそのメンバー関数の1つへのポインターを渡し、ファンクターを作成してプログラムに渡します。

あなたの助けと「修正」をいただければ幸いです。

ありがとうございました!

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

c++ - とにかくC++11には、テンプレート内でメンバーポインタータイプを取得する方法はありますか?

これがC++03では不可能だったことは知っていますが、これを可能にする新しいブードゥーがあることを望んでいます。下記参照:

C ++ 11でこれを行う方法はありますか?decltypeは役に立ちますか?

**更新:Vladの例を使用して、私はこのようなものが機能すると考えていました(警告:現在decltypeをサポートするコンパイラを構築しているため、コンパイルしていません)

これは機能しますか?

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

c++ - メンバー関数へのポインターの受け渡し

そこにはたくさんの例がありますが、それでも私は自分の問題の解決策を理解できないようです。私は持っています

StartGetFoos()呼び出されると、Foosを取得するために実行されたリクエストで、コールバックが保存されます。リクエストが完了すると(約30秒かかります)、保存されたコールバックが結果とともに呼び出されます。 このメソッドのシグネチャを変更できません。

そしてどこか他の場所にクラスがあります

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

c++ - クラス内のC++constexprメンバーポインタ

クラスを使用して、テンプレートデータ構造のすべてのパラメーター、特に侵入型AVLツリーをグループ化しようとしています。ユーザーは次のようなことをします。

しかし、MyAvlTreeParamsのメンバーポインタに問題があります。このサンプルはそれを示しています:

これはclang++3.1で機能しますが、g++4.7.2は次のエラーでリンクできません。

エラーは、構造体Bの定義のどこかに次の宣言を追加することで修正されます(この質問を参照)。

私の場合、これがどのように問題になるかを確認するには、AVLツリーを使用するたびに次のすべてを追加する必要があります。

このような情報のないボイラープレートコードなしでこれを行う方法はありますか、またはパラメーターをグループ化するという同じ目標を達成する別の方法がありますか(つまり、すべてのメンバーをテンプレートパラメーターとして渡すだけではありません)?

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

c++ - 基本クラスの派生テンプレート クラスが等しいかどうかをチェックする

これは、このプラットフォームでの最初の質問です。不明な点や質問の仕方が適切でなかったら申し訳ありません。

以下のコードは、任意の C++11 コンパイラでコンパイルする必要があります。最小限に抑えてみました。このコードの意味は、この手順で失われる可能性がありますが、クラスと対応するメンバー関数のリストを保持して、それらすべてを同じパラメーターで呼び出すようにしようとしていることは明らかです。

これは完璧に機能します。私の問題は、リストからクラスとメンバー関数を削除する方法がわからないことです。さらに、同じクラスとメンバー関数が 2 回呼び出されることは望ましくありません。これは実質的に同じ問題です。Base 型の 2 つのクラスが等しいかどうかをチェックする必要があります。void ポインターを提供する仮想関数を提供できます。

しかし、それはクラスの同等性をチェックするだけです。このクラスの関数ポインターが等しいかどうかを確認する方法と、その方法がわかりません

のように見える必要があります。

誰かが問題の解決策を知っていますか? それとも、このチェックはできませんか?

ジョー