私は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. 取得ユーザー入力
- 3. クラスC内の静的メソッドのラベルを取得する#
- 4. 別々のCプログラムへの動的なpythonユーザー入力
- 5. RingoJS javascript - コンソールでユーザー入力を取得
- 6. awkでユーザー入力を取得
- 7. 静的テンポラリテーブルを入力として取得するコンストラクタ(プログレスABL)
- 8. 静的クラスの静的メソッドのMethodInfoの取得
- 9. クラスの取得方法.NETの基本クラスの静的メソッドを入力しますか?
- 10. Hadoop Mapperクラスの入力パスを取得
- 11. モデルレイヤーからのユーザー入力の取得
- 12. 静的コンテキストでクラスのロガーを取得するには?
- 13. Guice - 静的ヘルパーメソッドを持つクラスへの依存関係を取り入れる
- 14. 入力の静的テキスト
- 15. ダイナミックコントロールからユーザー入力を取得
- 16. ユーザー入力を取得するRuby
- 17. ユーザーCから入力整数を取得する方法
- 18. 入力した各入力のクラス名を取得
- 19. Cプログラムへの入力を渡し、PHPを使用して出力を取得
- 20. C++クラスの静的宣言
- 21. まだ入力中にユーザー入力を取得する(端末アプリケーションで)
- 22. symfony静的ページへのhtmlフォームと入力タグの追加
- 23. 静的クラス内のすべてのフィールドを静的クラス内のリフレクションで取得する
- 24. C#XNA - ユーザー入力
- 25. 静的クラスC#ASP.NET Webフォームで静的メソッドを呼び出す
- 26. 静的Javaメソッドのクラスへのアクセス
- 27. 非静的クラスのプロパティへのアクセス
- 28. C#ゲームパッド入力/出力クラス
- 29. CユーザーによるGUIユーザー入力
- 30. Cユーザー入力の検証 -
なぜ、ユーザーが温度の値を入力したときに、ニューロンクラスの静的フィールドを更新できないのですか? –
計算にパラメータとして 'temperature'を渡すことができますか? –