問題タブ [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.

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

c++ - そのクラスのヘッダー ファイルでクラス メンバー関数を定義する場合、inline キーワードを使用する必要があります。なぜ?

ヘッダー ファイルでクラスを定義し、その関数を同じヘッダー ファイルに実装しました。しかし、これらの関数を定義している間、関数定義でインラインキーワードを配置する必要があります。それ以外の場合、コンパイラはコンパイル時エラーを出しました。

インラインはコンパイラへのヒントにすぎないことを知っています。では、なぜ関数定義に inline キーワードを入れる必要があるのでしょうか。

コードをコンパイルするために、qtでビジュアルスタジオコンパイラを使用しています

ここにコードがあります

tempinline.h

tempinline.cpp

main.cpp

エラー

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

c++ - 名前検索とクラス スコープ

setVal の戻り値の型が string 型で、パラメーターの型が double 型であるのはなぜですか?

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

c++ - オプションをクラスまたはそのメンバー関数に渡すエレガントな方法 c++

私は C++ および OO プログラミングにかなり慣れていないため、クラスを正しい方法で設計するのに苦労しています。私のアプリケーションは、構成ファイル内でユーザーが設定できる一連のパラメーターに基づいています。これらのパラメーターは実行の開始時に読み込まれ、さまざまなプログラム部分に配布されます。つまり、さまざまなタスクを実行するこれらのパラメーターに基づいてクラスが構築されます。しかし、この質問に似ています

複数の引数を関数に渡すエレガントな方法

一部のクラスが多くの異なるパラメーター/オプションに依存している可能性があります (例: 9)。これらのパラメーターは、クラス自体またはパブリック メンバー関数の実行を指定できます。これらのオプション/パラメーターは、実行中に変更しないでください。醜い関数/コンストラクター呼び出しが回避されるように、適切なクラス内にすべてのパラメーターを埋め込むためのさまざまなソリューションについて考えましたが、誰も魅力的ではないようです。

1) 構築に必要な各クラス内のパラメータのみを格納します。残りは、必要に応じて構成ファイルを保持する構造体からメンバー関数に渡されます。

長所: パラメータに対するクラスとそのメソッドの依存関係が明らかになります。短所: これにより、多くのパラメーターを使用した関数呼び出しが発生する可能性もあります。オプションは変更されませんが、この関数が呼び出されるたびにすべてのオプションを明示的に指定する必要があるため、これも理想的ではありません。

2) 構築時にすべてのパラメーターをクラスに渡し、それらをプライベート メンバー変数にします。これは、タイプのコンストラクターにつながります

そのクラスの複数のオブジェクトが作成されるときに、常にすべてのパラメーターを明示的に指定する必要がある場合、これは面倒です。

3) すべてのパラメーターを 1 つの大きな構造体に保存します。この構造体への共有ポインターを各クラスのプライベート メンバー変数にします。長所: コンストラクターは単一のポインターのみを使用します。短所: クラス インターフェイスからは、構成のどのパラメーターがこのクラスで使用されているかが明確になりません。これは、コメントによって明確になる場合があります。

4) の回答に触発された

複数の引数を関数に渡すエレガントな方法

必要なパラメーターを保持する各クラス内で、ネストされたオプション構造体を定義します。

長所: インターフェイスから、このクラスで使用されるオプションが明確になります。これらのオプションは、メンバー関数をオプション クラスに追加することにより、構成ファイルから直接読み取ることができます。このような特定のオプション セットのインスタンスは、構成ファイルなしでユーザーが作成でき、必要に応じて既定値を変更できます。クラスを構築するための一般的なパラメーターの他に、そのようなオプション セットのみをコンストラクターに提供する必要があります。実際、これは私のお気に入りのアプローチです。

短所: どのパラメーターをクラスのプライベート メンバー変数にするか、またはオプション セットに含めるかを区別するのに苦労します。これにより、メンバー変数とは何か、クラス/メンバー関数のオプションとは何かという疑問が生じます。何かアドバイスはありますか?

私の考えについてコメントして、アドバイスをいただけますか?

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

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

c# - 送信者をオーバーライドしながらクラス メンバー オブジェクトのイベントを発生させる

MyEventで定義されたイベントClass Bと、イベントのハンドラーのデリゲートを として持っていMyEventHandler(object sender, MyEventArgs e)ます。

私のアプリケーションには のインスタンスがいくつかありClass A、それぞれClass Aに のメンバー インスタンスが 1 つありますClass B

Class Aハンドラーをサブスクライブする場合、 ClassB.MyEventthenはイベントを発生させsenderた のインスタンスになり、への呼び出しからになります。 Class BeMyEventArgsClass BOnMyEvent(e)

ただし、私が本当に必要としているのは、アプリケーションがハンドラーをサブスクライブすることですClassA.ClassB.MyEvent(または必要ClassA.ClassBMyEventに応じて)senderのインスタンスを表し、そのインスタンスがClass Aイベントを発生Class Bさせ、呼び出し元eのままです。MyEventArgsClass BOnMyEvent(e)

にサブスクライブするハンドラーによって呼び出される一種のWrapperEventinを作成できますが、これは洗練されていないようで、これを行うためのよりクリーンな方法があるかどうか疑問に思いました。Class AClass AClassB.MyEvent


リクエストごとのコード スニペット:

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

c++ - C++ - 内部的に、クラスのメンバー関数を定義するとき、メンバー変数名またはそのゲッター関数を使用する必要がありますか?

質問のタイトルが実際の質問を効果的に反映していない (またはまったく反映していない) 場合は、お詫び申し上げます。これは、stackoverflowで質問または回答するのが初めてで、間抜けになっている可能性があります...

とにかく、私の(精巧な)質問はこれです:

プライベート メンバー変数の使用を必要とするクラスでパブリック メンバー関数を定義する場合、それぞれ (プライベート変数) はパブリック メンバーの「ゲッター」関数を持ちます (「ゲッター/セッターを失う...」と答えないでください。それらを使用する)、より良いでしょうか-実際には「より良い」、C++コンパイラ間でクラスをより「拡張可能」にし、どのオプションがより多くの「前方互換性」を可能にするかなど-- this->m_variable を使用する OR this- を使用する- >getm_変数()?

私が現在取り組んでいるプロジェクトから、次のコード例 (Family という名前のクラスを作成する) を含めて、正確に何を意味するのかを明確にしようとしました。

Family.h のスニペット

Family.cpp のスニペット

したがって、例の質問が変更されました。

countChildren(gender g)私が持っている関数の定義では、i < this->numChildren;(前に述べたメトリックに関して) を使用する方が良いでしょうi < this->countChildren();か? 同様に、同じ for ループの子配列を反復処理する場合、OR を使用Person*して現在の反復でそれぞれを定義する方がよいでしょうか?*(this->children + i)*(this->getChild() + i);

先に述べたように、この質問がスタックオーバーフローにとって「ディスカッションベース」すぎる場合はお詫び申し上げます。これ初めての質問です。

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

java - クラスメンバーの直接初期化とメソッド内での初期化の違いは何ですか?

私は Google Foobar のタスクを実行しましたが、同じように見える 2 つの実装が異なる方法で機能する理由に興味がありました。最初のソリューションでは、2 番目のソリューションがすべてのテスト ケースに合格すると、「テスト 2 が失敗しました」と表示されます。どちらも OOP のベスト プラクティスに従っていないことはわかっていますが、最初の実装の正確な問題は何なのか興味深いです。

1.

2.

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

java - メインクラスのJavaのみの静的メンバー

main メソッドを含むクラスで、そのクラスのすべてのメンバーを static として宣言するのは悪い習慣ですか? もしそうなら、なぜですか?メインメソッドで、囲んでいるクラスの新しいインスタンスを作成し、いわばコンストラクターからプログラムを実行する方が良いでしょうか?

編集:(明確化)静的およびシングルトンに関する概念と、一般的にいつ使用するかを知っています。しかし、この質問は特にプログラムのメインクラスに関するものです。@Andrew Tobilko(どうやら彼の答えを削除した..)は、彼の答えから判断して、私の質問を最もよく理解しているようです。私の場合、メインクラスは約 200 LOC で、他の 2 つの小さなクラス (それぞれ < 100 LOC) を使用するため、小さなプログラムです。メインクラスには、Swing GUI の作成といくつかの実行ロジックが含まれており、いくつかのインスタンスが必要なわけではありません。そのため、静的なメイン メソッドからすべてを使用できるように、すべてを静的にするだけでよいと考えました。これは動機付けですか?C# でコーディングしている友人は、大量の static を使用すると、C# では死刑になるだろうと私に言いました。それか何かにいくつかのメモリの問題がある可能性がありますか?

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

c++ - std::string クラス メンバはポインタであるべきですか?

そして、なぜ/なぜしないのですか?

コンストラクターで文字列を受け取り、それを格納するクラスがあるとします。このクラス メンバはポインタであるべきか、それとも単なる値であるべきか?

または...

プリミティブ型を格納する場合は、コピーを取ります。オブジェクトを格納する場合は、ポインターを使用します。

その文字列をコピーしたい気がしますが、それをいつ決定するかわかりません。ベクトルをコピーする必要がありますか? セット?地図?JSONファイル全体...?

編集:

移動のセマンティクスを読む必要があるようです。とにかく、質問をもう少し具体的にしたいと思います。

const 文字列として 10 メガバイトのファイルがある場合、それをコピーしたくありません。

100 個のオブジェクトを新しく作成し、それぞれのコンストラクターに 5 文字の const 文字列を渡す場合、所有権を持つべきではありません。おそらく、文字列のコピーを取るだけです。

だから(私が完全に間違っていないと仮定すると)、クラスのclass GenericTextHaverから何をすべきかは明らかですが、 を設計しているとき、テキストを持つ方法をどのように決定しますか?

必要なのは、コンストラクターで const 文字列を受け取り、そこから同じ値を持つ const 文字列を取得できるクラスだけである場合それを内部で表現する方法をどのように決定しますか?