問題タブ [pointer-to-member]

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 投票する
1 に答える
10330 参照

c++ - オーバーロードされたメンバー関数のアドレスを取得するには?

オーバーロードされたメンバー関数の特定のバージョンへのポインターを取得しようとしています。次に例を示します。

エラー メッセージは、「エラー C2440: 'initializing' : 'overloaded-function' から 'MemberFunctionType' に変換できません」です。

これfはオーバーロードされていない場合に機能しますが、上記の例では機能しません。なにか提案を?

編集

上記のコードは、「const」を忘れていたという現実の問題を反映していないことに注意してください-これは、受け入れられた回答が指摘していることです。ただし、問題は他の人にも発生する可能性があると思うので、質問はそのままにしておきます。

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

c++ - テンプレートへのオーバーロードされたメンバー関数ポインター

次のようなテンプレートでメンバー関数ポインターを格納しようとしています:(これは私の実際のコードの簡略化されたバージョンです)

次に、GAppのすべてのオーバーロードされたメソッドに対して次のようにします。

これを呼び出すことは問題ありませんfoo()が、どうすればこれを呼び出すことができfoo(double d)ますか?次が機能しないのはなぜですか?

それは私に与えます

構文エラー:「double」の前に「)」を付ける必要があります

ここで使用する必要のある構文がわかりません。これはばかげた質問かもしれませんが、誰かがこれについて私を助けることができますか?

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

.net - メンバーへの C++/CLI ポインター

C++/CLI でポインターからメンバーへのコンストラクトを実装するためのさまざまなオプションは何ですか?

X 座標と Y 座標に基づいていくつかのアクションを実行するいくつかの 2D ジオメトリ アルゴリズムを実装しました。X 軸用に 1 回、Y 軸用に 1 回、頻繁にコードを複製していることに気付きました。例として、各軸に沿った最大境界と最小境界を見つけます。

ネイティブ C++ を使用していた場合、X または Y メンバー (幅、高さなど) へのポインターを使用してパラメーターとして渡すことができたので、各アルゴリズムを 1 回だけ実装する必要がありました。しかし、C++/CLI では、これは不可能です。私のオプションは何ですか?効率的で軽量で簡潔なものを探しています。

0 投票する
7 に答える
4242 参照

c++ - C ++でのコールバック、テンプレートメンバー?

次のコードは機能しませんが、私がやりたいことをうまく表現しています。テンプレート構造体コンテナに問題があります。これは、テンプレート引数のサイズがわかっているため、機能する必要があると思います。

そのようなことをする方法はありますか?メソッドへのポインタをラップする非テンプレートクラスのコールバックがあるということですか?

C ++の達人に感謝します!

編集:

これを見てください:

C ++でのコールバック、テンプレートメンバー?(2)

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

c++ - C++ でのコールバック、テンプレート メンバー? (2)

次のコールバック クラスは、「呼び出し可能なもの」への一般的なラッパーです。テンプレートがなく、非常にクリーンなその API が本当に気に入っていますが、内部には避けられなかった動的割り当てがいくつかあります。

コールバック クラスのセマンティクスと API を維持しながら、以下のコードでnewdeleteを取り除く方法はありますか? 本当にできたらいいのに。


必要なもの:


コールバック クラス:


API の例:


どうもありがとう !!:-)

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

c++ - void*とメンバー関数へのポインターの間のキャスト

私は現在GCC4.4を使用してvoid*いますが、メンバー関数へのポインターとの間でかなりの頭痛の種があります。次のように、C++オブジェクトをLuaインタープリターにバインドするための使いやすいライブラリを作成しようとしています。

次の関数(一般化する機会が得られるまで特定の関数シグネチャに固有)を除いて、ほとんどの作業を完了しました。

Luaに慣れていない方のためにlua_touserdata(L, lua_upvalueindex(1))、クロージャに関連付けられた最初の値(この場合はメンバー関数へのポインター)を取得し、それを。として返しますvoid*。GCCは、void*->void (T::*)(int, int)が無効なキャストであると文句を言います。これを回避する方法について何かアイデアはありますか?

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

c++ - C++ で structarray マップ ファンクターをコーディングする最も明確な方法

これは、何かを行うための最も読みやすい方法に関する意見の投票です。C++ のメンバーへのポインター、バイト オフセット、またはテンプレート化されたファンクターを使用して「構造体 foo からメンバー X を選択する」を定義するかどうかです。

構造体の大きなベクトルを含む型があり、基本的にそれらのいくつかの範囲でreduceとして動作するユーティリティ関数を作成しています。各構造は、従属変数のグループを独立した次元に沿ったいくつかの点に関連付けます。簡単な例を考え出すために、これが時間の経過に伴う部屋の一連の環境条件を記録すると想像してください。

私の関数は、3 次補間を実行して、使用可能なサンプル間の特定の時点での条件を推測するだけです。

この関数を一般化して、温度だけでなく、任意のメンバーに一般的に適用できるようにしたいと思います。これを行うには 3 つの方法が考えられます。どれも簡単にコーディングできますが、1 年後にこれを使用する必要がある人にとって、どの方法が最も読みやすいかはわかりません。ここに私が考えているものがあります:


メンバーへのポインターの構文

これは最も "C++ らしい" 方法のように感じますが、奇妙に見えます。また、メンバーへのポインター構文全体がほとんど使用されないため、私のチームのほとんどの人はほとんど理解していません。これは技術的には「正しい」方法ですが、私が最も混乱するメールを受け取る方法でもあります。

構造物のオフセット

これは機能的には上記と同じですが、ポインター計算を明示的に行います。このアプローチは、私のチームの全員 (全員が C++ の前に C を学んだ) にすぐに馴染み、理解できるものになるでしょう。

テンプレート化されたファンクター

これは、最も単純で STL っぽい方法ですが、余分な型付けと構文、即席のクラス定義が大量にあるように思えます。上記の2つとほぼ同じものにコンパイルされますが、実行可能ファイル全体に冗長な関数定義の束もダンプされます. (私はこれを/FAcsで確認しましたが、リンカーがそれらを再び取り出す可能性があります。)


上記の 3 つすべてが機能し、コンパイラはそれらすべてに対してほぼ同じコードを発行します。したがって、私がしなければならない最も重要な選択は、単純にどちらが最も読みやすいかということです。どう思いますか?

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

c++ - メンバーへのポインタにアクセスできません。なんで?

次のコードを検討してください。

コンパイラがエラーを生成するのはなぜですか?(VS2008)


新しい

このバグをconnect.microsoft.comに投稿しました。

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

c++ - コンパイル時にメンバーへのポインタを保存する方法は?

次のコードを検討してください

このパラメーターが型名または整数値である場合、任意のテンプレート パラメーターを保存できます。問題は、メンバーへのポインターがオフセット、つまり整数であることです。ここで、コンパイル時にメンバーへのポインターを保存します。

コンパイル時にメンバーへのポインターを保存する方法は? 私はVS2008を使用しています。

ノート。コンパイル時間は重要です。ランタイム ソリューションを記述しないでください。私はそれを知っている。