問題タブ [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++ - クラスメンバーアクセス:セクション3.4.5、ポイント2:N3290ドラフトC++からのポイント
クラスメンバーのアクセス:セクション3.4.5、ポイント2:
クラスメンバーアクセス(5.2.5)のid-expressionがunqualified-idであり、オブジェクト式のタイプがクラスタイプCの場合、unqualified-idはクラスCのスコープで検索されます 。疑似デストラクタ呼び出し(5.2.4)、unqualified-idは、完全なpostfix-expressionのコンテキストで検索されます。
上記のステートメントのここで:疑似デストラクタ呼び出し(5.2.4)の場合、unqualified-idは完全なpostfix-expressionのコンテキストで検索されます。
プログラムの観点からこれを説明できる人はいますか(疑似デストラクタ呼び出しについて知っています)?
c++ - 引数として渡されたオブジェクトのさまざまなメンバーにアクセスするためのテンプレート
一連の隣接点で定義されたさまざまな変数の勾配を計算する関数があります。アルゴリズムは常に同じですが、計算される内容に応じて、近傍の異なるメンバー データがアクセスされます。たとえば、速度の勾配を計算する場合は を使用し、応力の勾配をNode::velocity計算する場合は を使用します。同じ関数を何度も書くのを避ける最善の方法は何ですか?Node::stress
私はいくつかの可能性を念頭に置いていました:
問題の特定のメンバー データを返すラムダ関数 (c++0x) または呼び出し可能なオブジェクトを渡します。
マイナスは、読み取りごとに余分な関数呼び出しです。
計算されているものを示す整数に基づいて関数をテンプレート化します。
おそらく効率的であるはずですが(コンパイラーが個々のインスタンス化で定数を使用して条件を最適化することを期待しています)、可読性と保守性はかなり低いです。
もっと良いアイデア?
c++ - C++でデフォルト以外のコンストラクターを使用してオブジェクトのメンバークラスを初期化する
ブースト乱数ジェネレーターを使用したいオブジェクトがあるという特定の状況があり、それは私が答えることができないより大きな質問につながりました。これが私が作成しようとしているもののサンプルコードです。
まず、私のヘッダー:
今私がしたいのは:
ただし、ヘッダーにあるため、これは機能しません。MyObjectのコンストラクターを使用して、さまざまなサブオブジェクト(ディストリビューション、ジェネレーター)のコンストラクターを呼び出すことができると思いましたが、方法がわかりません。MyObjectのコンストラクターが呼び出されるまでに、サブオブジェクトのデフォルトコンストラクターはすでに呼び出されていますが、これらのプロパティをリセットするためのメンバーメソッドがあることはわかりません...それ以外に、それは私が混乱しているポイントではありません。 m紛らわしい問題ですが、私が知る限り、私の問題は次のような幼稚な例になります。
これは他のすべての人にとって第二の性質であると確信していますが、オブジェクトのメンバーオブジェクトをデフォルト以外のコンストラクター値に初期化するためのベストプラクティスについて説明している記事は見つかりません。
java - インターフェイスを使用して2つのJavaクラス間で通信する
AとBの2クラスあります。
class A implements Constants{
}
クラス B にクラス A のインスタンスを持ちたくないのですが、どうすればよいですか? インターフェイスに変数を設定する関数がある場合、両方のクラスがこの関数を実装する必要があります。それは間違っているでしょう?同じ関数の 2 つの定義が競合するためですか?
c++ - 非ポインタクラスメンバーの初期化
最近、評判の良いC++FAQからコンストラクターについて多くのことを読んでいます。エントリの1つは、コンストラクタ自体のコードブロック内でクラスメンバーを初期化するのではなく、初期化リストを使用することが常に最善であると述べています。
これは、コンパイラが1つのコピーではなく、クラスメンバーの複数のコピーを作成する傾向があるためです。
例
良い
悪い
また、これはコンストラクターに関連しますが、非メンバー関数からのオブジェクトの純粋な初期化にも関連します)は、次のようなメソッドを使用してオブジェクトを初期化する場合です。
あなたはそうするでしょう、そして私は引用します:"[declare] a non-member function that returns a Foo object"。
(詳細については、上のリンクをクリックしてください)
質問
このため、次のようにするのは賢明ではありません。
またはこれさえ:
これらの割り当て方法(つまり、これらが非ポインターであるという事実)のために、これらのオブジェクトでさえ最初に初期化が必要かどうか疑問に思います。もしそうなら、これはそれを実行する正しい方法ですか?または、初期化のより良い方法はありますか?
これが質問とどのように関連しているか
これは、C ++コンストラクターの初期化の背後にある方法論が、コンストラクター関数を使用したオブジェクトの初期化と、オブジェクトがスタックに割り当てられているかどうかを知らないという事実の両方に関連しているため、一般的な質問に関連しています-または、とにかく信じています-(いずれにしても、ポインタが割り当てられていないオブジェクト)は、そもそも初期化が必要です。
python - 不可解なスコープの動作
ここで何が起こっているのか理解できないようです:
出力は次のとおりです。
inst1のリストは、inst2のリストについて何も知らないと思っていたのですが、どういうわけか、myListのスコープがクラスのインスタンス化を超えているように見えます。これは非常に不安で不可解なことだと思いますか、それともここで何かが足りないのでしょうか。
ありがとう!
c++ - 単一の関数ポインターが複数のクラス メンバー関数を指すことはできますか
これが私のアプリケーションによって課される要件です。私はクラス A を持っています。これは、cFunc という関数ポインタを受け入れます。基本的に A の実装では、cFunc を複数回呼び出します。
cFunc ポインター自体は、アプリケーションに応じて異なる関数を指す必要があります。したがって、アプリケーションごとにcFuncと同じ関数定義を持つクラスを作成しますが、クラスのメンバー関数をこのポインターに割り当てることはできません
では、指定された形式のメンバー関数を持つ任意のクラスを使用してクラス A を初期化できるようにするにはどうすればよいでしょうか?
java - 「非静的メソッド」エラーとは何ですか?「これ」はどのように機能しますか?
Java に関する非常に基本的な質問が 2 つあります。最終的に理解したいと思っていることを、きっぱりとまとめて説明します。次の短いコードがあります。
コンパイルすると、恐ろしい「非静的メソッド swapMe(int,int) は静的コンテキストから参照できません」というエラーが表示されます。また、「a is already defined in swapMe(int,int)」と「b is already defined in swapMe(int,int)」が表示されます。
最終的に厚い頭蓋骨を乗り越える必要があるのは、「非静的メソッド」エラー、それがどのように(なぜ)発生するか、およびそれを回避する方法です。
さらに、「swapMe」メソッドの「a」変数と「b」変数を使用して、私がやろうとしていることをあなたができると仮定していました。「a」と「b」を渡すだけでなく、新しい変数「a」と「b」を作成し、「this」キーワードでそれらを参照できると思いました。
これが非常に基本的なことであることは承知していますが、これら 2 つの「問題」は、私が Java で抱えている主な問題点の 2 つであり、何らかの理由で適切に学習できないようです。
これを読んでくれてありがとう。すてきな一日を。
c++ - 別の参照としてのクラスメンバー:代入演算子でクラッシュ
Barメンバーの1つの内部への参照を持つクラスがあります( Bar::foo):
(特別なオプションなしで)コンパイルするとg++、代入演算子でクラッシュします。なんで?
c++ - データメンバーの宣言前のメンバー関数でのデータメンバーのアクセシビリティ
このコードを考えてみましょう:
データメンバー'i'は、宣言/定義される前でも使用されます。これはコンパイルエラーではありませんか?(うまくコンパイルされました!!!)