問題タブ [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++ でメンバ変数ポインタをジェネリック型にキャストする方法
アプリケーションに次のようなコードがあります。
問題は - MYSTERYTYPE はどうあるべきか? void* も int も機能しませんが、値 &A::b は、printf を介して出力すると問題なく出力されます。
明確化: はい、&A::b は C++ で定義されています。はい、クラス メンバーへのオフセットを取得しようとしています。はい、私はトリッキーです。
編集: ああ、offsetof() を使用できます。とにかくありがとう。
c++ - &func または class::func を C++ で使用することはできますか?
これは矛盾しているようです。Example::func の代わりに &Example::func を使用するのはなぜですか? Example::func または &exampleFunction の用途はありますか? 関数への参照を作成して、Example::func を除外することはできないようです。exampleFunction は既にポインターを返しているため、&exampleFunction を使用する方法は考えられません。
c++ - コンストラクター初期化子でメンバーポインターを別のメンバーのアドレスに割り当てるのは標準の C++ ですか?
これは規格に準拠していますか?
c++ - 同じ型のメンバ関数ポインタを返すメンバ関数ポインタ
同じメンバー関数ポインター型を返すメンバー関数ポインターを C++ で宣言したい
これは機能しません:
誰かが解決策を知っていますか?
c++ - ネストされたデータメンバーポインタ-不可能ですか?
次の縮小されたコードサンプルは、有用なことは何もしませんが、データメンバーポインタへの2つの後続の割り当てを行います。最初の割り当ては機能し、2番目の割り当てはコンパイラエラーを発生させます。おそらく、ネストされたメンバーにあるためです。
質問は次のようになります。メンバーポインタがネストされたメンバーを指すようにすることは本当に不可能ですか、それともそこに凝った構文がありませんか?
ATMバイトオフセットと多くのキャストを使用して回避しています。しかし、それは醜いので、それらのメンバーポインタを使用したほうがいいです。
はい、私はその質問が確かに以前に発生したことを知っています(ほとんどすべての質問のように)。はい、事前に検索しましたが、満足のいく答えは見つかりませんでした。
御時間ありがとうございます。
c++ - 基本クラスからのメンバーへのポインターのタイプ
メンバーポインタに関して問題があります。次のコードは、Oracle SolarisStudio12.2のCCとcygwinGCC4.3.4の両方を使用してコンパイルできませんが、Microsoft Visual C++2010では機能します。
最後から2番目の行で、上記の両方のコンパイラはに一致するものを見つけることができませんBar<B>::foo(int A::*)
。式のタイプ&B::x
が実際に次のint A::*
とおりであることを確認するための簡単なテストを作成しました。
次の回避策はGCC(Oracle CCではまだテストされていません)では機能しますが、あいまいさのためにVC++では失敗します。
私の質問:どの動作が正しいですか?int A::*
どうやらVC++は、メンバー関数テンプレートへの呼び出しを満たすために、からへの暗黙のアップキャストを実行しint B::*
ますが、他の2つのコンパイラは同じことを検討するべきではありませんか?
c++ - メンバー関数ポインター
C++ FAQ Lite の次の内容が当てはまる場合: 「関数名は関数へのポインターに減衰します」(配列名がその最初の要素へのポインターに減衰するため); アンパサンドを含める必要があるのはなぜですか。
だけでなく:
2 番目のケースでは、Fred::f は関数であり、その関数へのポインターに減衰する可能性があります。
この質問がそれほどばかげていないことを願っています。
c++ - メンバーへのポインタのオフセット
このコンテキストでフィールド「m」のオフセットを取得するにはどうすればよいですか?amコンパイル時式を使用したいと思います。
助けてくれてありがとう。よろしくお願いします
c++ - 派生型にメンバー データ ポインターを割り当てることはできますか?
これは、おそらくコード例で最もよく示されています。以下は g++ でのコンパイルに失敗します。
次のエラーが表示されますinvalid conversion from 'Derived Container::*' to Base Container::*'
。これは言語で許可されていませんか?これはコンパイラのバグですか? 間違った構文を使用していますか?
助けてください!
なぜこれをやろうとしているのかについての背景: 主に派生型として使用したいメンバー データがいくつかありますが、いくつかの共通コードを介してデータを入力できるようにしたいと考えています。データは任意の順序で送信され、入力する適切なメンバー データを選択するために使用する文字列ラベルがあります。std::map<std::string, Base Container::*>
共通のインターフェイスを介して各メンバーにデータを割り当てるを作成することを計画していました。if else
適切なメンバーデータを見つけるために巨大な構造を持たないようにしたいと思います。
c++ - プライベート ベースを持つ関数メンバー ポインター
次のコードでは、コンパイル時エラーが発生します。
'
base::print
': クラス 'base_der
'で宣言されたプライベート メンバーにアクセスできません
ただし、public
派生クラスでメンバーを作成しました。なぜこれが機能しないのですか?