問題タブ [class-members]
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++ - GCC の問題: テンプレート引数に依存する基本クラスのメンバーを使用する
次のコードは gcc ではコンパイルされませんが、Visual Studio ではコンパイルされます。
エラーが発生します:
test.cpp: メンバー関数 'void B::bar()':
test.cpp:11: エラー: 'foo' はこのスコープで宣言されていません
しかし、そうあるべきです!私がに変更bar
した場合
その後、コンパイルされますが、これを行う必要はないと思います。GCCがここに従っているC ++の公式仕様に何かありますか、それとも単なる癖ですか?
c++ - メンバー データでポインターまたは参照を使用する必要がありますか?
これは、質問を説明するための単純化された例です。
したがって、B は C の一部を更新する責任があります。コードを lint で実行したところ、参照メンバーlint#1725についてぐずりました。これは、デフォルトのコピーと割り当てに注意することについて話していますが、これは十分に公平ですが、デフォルトのコピーと割り当てはポインターでも悪いため、そこにはほとんど利点がありません。
ネイキッド ポインターを使用すると、そのポインターを削除する責任が誰にあるのかについて不確実性が生じるため、私は常にできる限り参照を使用するようにしています。私はオブジェクトを値で埋め込むことを好みますが、ポインターが必要な場合は、ポインターを所有するクラスのメンバー データで auto_ptr を使用し、オブジェクトを参照として渡します。
通常、ポインターが null になるか、変更される可能性がある場合にのみ、メンバー データでポインターを使用します。データ メンバーの参照よりもポインターを優先する他の理由はありますか?
一度初期化された参照は変更されるべきではないため、参照を含むオブジェクトは割り当て可能であってはならないというのは本当ですか?
c++ - intを除いて、「インライン」静的constが許可されないのはなぜですか?
#2、#3、#4、#5 が違法である理由はありますか?
#5の理由はわかっていると思います:コンパイラは「実際の」文字列オブジェクトを必要とし(組み込み型ではないため)、無意識のうちに であるかのように置き換えることはできFive
ませ"Hello"
ん#define Five "Hello"
。しかし、その場合、コンパイラは .obj ファイルにヒントを残して、リンカにstring Five
どこかのインスタンスを 1 つ自動的に作成するように指示できませんか?
#3 と #4、特に #2 については (笑)... 考えられる理由がまったくわかりません! int と同様に、float と double は組み込み型です。そして short は、(おそらく) より短い整数です。
編集: Visual Studio 2008 を使用してコンパイルしています。この場合、すべてのコンパイラが同じように動作すると思いましたが、明らかに g++ は問題なくコンパイルされます (#5 を除く)。そのスニペットに対してVSが与えるエラーは次のとおりです。
php - クラス変数の配列からクラスメンバーにアクセスする方法は?
PHP のリフレクション機能を使用して、メソッドからパラメーター名のリストを取得したいと考えています。私はこのようなクラスを持っています:
次のようなコードを使用してリストを取得できます。
配列からクラスメンバーにアクセスする方法を知りたいので、割り当てを行う必要はありません。これは可能ですか?のようなものを試しましecho ($params[0])->name
たが、エラーが発生します。
c++ - オブジェクト指向のデザイン提案
これが私のコードです:
ソルジャーオブジェクトを介してGunのすべてのメンバー関数を呼び出す必要があります。何かのようなもの:
また
では、どちらがより良いデザインですか?ガンオブジェクトをプライベートメンバーとして非表示にし、getGun()関数を使用してアクセスします。それともパブリックメンバーにしますか?または、これらすべての関数をカプセル化すると、実装が難しくなります。
では、どれが一番いいと思いますか?
c++ - クラス データ メンバの初期化順序
次のコードでは、ctorX
が呼び出されたときに、ctorA
またはctor がB
最初に呼び出されますか? それらがクラスの本体に配置される順序はこれを制御しますか? この問題について説明する C++ 標準のテキストのスニペットを誰かが提供できれば、それは完璧です。
visual-studio-2008 - VSIntelliSense-IFluentInterface/IHideObjectMembersトリックは機能しません。なんで?
このIHideObjectMembers
トリック(別名IFluentInterface
)は、たとえば流暢なインターフェイス実装で、System.Object
メンバーをIntelliSenseから隠すために使用できます。(このトリックがわからない場合は、上記のリンクから確認できます。ここでは、インターフェイスの通常の宣言を繰り返しています:)
System.Object
これで、次のように別のタイプのメンバーを非表示にできるはずです。
また:
VS2008ExpressとVS2008Standardの両方でこれを試しました。ただし、IntelliSenseから隠されているメンバーはありません。私はEditorBrowsableAttribute
さまざまなプロジェクトでを使用しましたが、常にうまく機能しました。ただし、この特定のシナリオでは機能しません。
物事が期待通りに機能していたら、私はそのSomeMethodTwo
方法を見ただけだったでしょう。
私は何かが足りないのですか?
PS:宣言とスクリーンショットから私のサンプルコードを推測できます。SomeClass
と呼ばれる単一のダミーメソッドを持つクラスがありSomeMethodTwo
ます。とてもシンプルです。このクラスの4つのメソッドは必要ないはずなので、再実装していません。System.Object
c++ - 多重継承テンプレート クラス
私の最初の考えは、クラス A には messageA と messageB オブジェクトを受け入れる 2 つのオーバーロードされた送信関数が含まれているため、上記のコードは問題ないはずです。
ただし、コンパイラは次のエラーを表示します。
あいまいな理由がわかりますか?最初のサブミット呼び出しで、messageA バージョンを呼び出したいのは明らかではありませんか? 2 回目の送信呼び出しでは、messageB バージョンを呼び出したいですか?
c++ - C++で(クラスメンバーとして)クラスデータにスマートポインタを配置する正しい方法は何ですか?
クラスBodaがあるとします:
そしてcydo
、このクラスには、スマート ポインターにしたいメンバーがあります (つまり、クラスが破棄されるとすぐに、そのメンバーの割り当てを自動的に解除したいのです)。
Boost のスマート ポインターを使用しているので、次のように記述します。
これは、スマート ポインターをクラス メンバーとして配置する正しい使用法ですか?
ありがとう、ボダ・シド。
c++ - C ++のクラスで静的constメンバーオブジェクトを初期化することは可能ですか?
クラス定義で静的定数メンバーを初期化することは可能ですか?コードについては、以下を参照してください。
どうもありがとう。