私はC++で書かれた大きなシミュレーションを持っています。シミュレーションの主な作業単位は、ニューロンを表すクラスです。その計算を行うために、ニューロンクラスの各インスタンスは温度にアクセスする必要があります。各シミュレーションは、数万のインスタンスのニューロンクラスを使用し、温度は各ニューロンについて同じ値です。このため、通常のメンバーデータとして格納するのではなく、ニューロンクラスの各インスタンスが独自のコピーを格納するメモリを占有する必要はありません。理想的には、静的メンバー変数(または、最後の手段として、グローバル変数)として格納します。しかし、実行時にユーザの入力として決定される温度が必要です。 Neruonクラスにこの変数へのアクセスを静的メンバーデータのやり方で与える簡単な方法はありますか?C++で静的にクラスへのユーザー入力を取得
答えて
変数が静的であるという理由だけでなく、変数もconstである必要はありません。下記のコードを参照してください。
#include <cassert>
struct X {
int member;
static int static_var;
};
int X::static_var;
int main() {
X x;
x.member = 1;
x.static_var = 2;
X y;
y.member = 3;
y.static_var = 4;
X::static_var = 5;
assert(x.static_var == y.static_var);
assert(&x.static_var == &y.static_var);
}
これはまさに私が探していたものです、ありがとう!私のOOPチョップは進行中の作業であり、私が持っているリファレンスはこれをカバーしていませんでした。再度、感謝します! – cipher42
@cipher、あなたの質問に答えた場合は、*回答*を受け入れることを忘れないでください。 –
static
メンバー関数を提供するだけで、実行時に呼び出して温度メンバーを設定することができます。
また、static
のメンバーをpublic
にして直接設定することもできます。個人的な選択として、私はメンバーの機能を通してそれをやるほうが好きです。
class Neuron
{
public:
static void setTemperature(int i)
{
mTemp = i;
}
private:
static int mTemp;
};
int Neuron::mTemp = 0;
int main()
{
//Get Temperature at run-time
Neuron::setTemperature(10);
return 0;
}
完璧、おかげで束! – cipher42
私はこれをグローバルの良い候補と見ます。あなたがシミュレーションに何かを追加して温度を使用するとどうなりますか?
誰でもいつでもグローバル変数を変更できるので、IMOはgetTemperature()
のようなグローバルスコープ(標準)の関数を持つことが最善の解決策であると思います。それから、どんなオブジェクトでもいつでも呼び出すことができます。それを独自のCファイルに置き、静的にマークすると、選択したメカニズムでのみアクセスできます。
また、気に入らなければ、静的なGlobals
またはSimulationInputs
クラスを作成し、気温のようなもののゲッターを作成することもできます。
シングルトン、グローバル、静的データ、oh my!
C++のデータモデルでは、さまざまなメカニズムやハッキングによって、データにグローバルにアクセスし、そのデータのインスタンス数を制限できます。
私たちはできるはずなので、私たちはすべきではありません。それが解決策になる可能性のある設計をしているからといって、選択する必要はありません。
通常、自分のデータを管理するクラスがあります。オブジェクトが管理していないデータが必要な場合は、それをパラメータとして渡します。
したがって、パラメータとして温度を渡します。明示的は暗黙的より優れています。
あなたは、Neurons
を表すクラスがあると述べました。私はあなたがNeuron
を意味すると仮定しますが、それらを一緒に保つNeurons
クラスを持つことも良いでしょう。それはすべてのNeuron
の計算に適用される温度を持つことができます。
- 1. 静的クラスでの自動入力
- 2. C - マトリックスへのユーザー入力
- 3. 取得ユーザー入力
- 4. クラスC内の静的メソッドのラベルを取得する#
- 5. 静的クラスの静的メソッドのMethodInfoの取得
- 6. 別々のCプログラムへの動的なpythonユーザー入力
- 7. パブリック静的クラスのC#テストプライベート静的メソッド
- 8. TextFieldから別のFXMLファイルへのユーザー入力を取得
- 9. コンソールプログラムからC#プログラムへのユーザー入力データの取得方法は?
- 10. ファイルCへのユーザー入力プログラミング
- 11. 静的クラス/フィールドへのバインド
- 12. 静的テンポラリテーブルを入力として取得するコンストラクタ(プログレスABL)
- 13. クラスの取得方法.NETの基本クラスの静的メソッドを入力しますか?
- 14. awkでユーザー入力を取得
- 15. RingoJS javascript - コンソールでユーザー入力を取得
- 16. 別のローカルホストへのユーザー入力の取得
- 17. Jquery:入力時にユーザーの入力を取得する方法
- 18. PHPの静的メソッドでクラス名を取得するには?
- 19. 静的コンテキストでクラスのロガーを取得するには?
- 20. C++で "クラスの静的メンバーではありません"エラーを取得する
- 21. スプリングブートタイムリーフからJavaクラスへの入力値の取得方法は?
- 22. Guice - 静的ヘルパーメソッドを持つクラスへの依存関係を取り入れる
- 23. どのように静的クラスC#からのconstを取得しますか?
- 24. C++クラスの静的宣言
- 25. C++静的クラスと非静的クラスのメンバ
- 26. 静的クラス関数のクラス型を取得
- 27. 入力の静的テキスト
- 28. Hadoop Mapperクラスの入力パスを取得
- 29. モデルレイヤーからのユーザー入力の取得
- 30. アクションバーメニューからのユーザー入力の取得
なぜ、ユーザーが温度の値を入力したときに、ニューロンクラスの静的フィールドを更新できないのですか? –
計算にパラメータとして 'temperature'を渡すことができますか? –