2016-11-10 2 views
1

私はCに非常に新しいです外の配列の要素を定義します。私は方程式でそれらを使用するために私のコードのどこにでも含める必要があります。温度と圧力のようなもの。一定の質量を持つ単一のオブジェクトを使用する前は。C++</p> <p>私は定数を含むヘッダを持っている...、++機能

real massObject   = 7.35619e-25; 

これ以上のオブジェクトを使用できるようにするには、複数のマスが必要です。 私は作成した配列のElementsを定義しようとしました。

const int numObjects  = 1; 
double vmassObject[numObjects]; 
vmassObject[0]   = 7.35619e-25; 

は、その後、私は関数の外のすべての要素を定義することはできませんでしたが、私は、私は毎回それを呼び出す必要がありますので、機能を使用しないことが分かりました。また、渡すオプションもありません。 要素をグローバルに定義する方法はありますか?

おかげ

+0

実際には、この配列を関数内で 'static'として宣言することができます。これにより、プログラムの存続期間中に(関数が呼び出されるたびにではなく)1回だけ初期化されます。関数に入力引数を渡して、配列内のどの要素を返したいかを伝えることができます。このように、狭いインターフェースの下に、この配列をカプセル化して、アクセスレベルを自由に選択できます(ここでは、読み取り専用アクセスレベルの単純なインターフェースについて説明しました)。さらに、さらに最適化したい場合は、 'inline'関数を宣言することができます。 –

答えて

1

あなたは配列を初期化することができます関連ノートで

double vmassObject[numObjects] = { 
    7.35619e-25 
}; 

は、あなたが複数のソースファイルに含めるヘッダファイルでこれを置くことができません。これは、配列が複数回定義され、プログラム内に1つの定義しか持たないためです。ヘッダで

あなたが配列を宣言することができる:

extern double vmassObject[numObjects]; 

単一のソースファイル(初期設定で)定義を置きます。

+0

ありがとう!初期化は動作しますが、もちろん素晴らしいことではありません。 私はソースファイルに定義を置くときに、関数に再びなければなりません。私は望みませんが、何か不足していますか? –

+0

@TK_Bはい、あなたは何かが不足しているようですが、私は何がわかりません。私の答えに示されているように定義をコピー・ペーストすると、ソース・ファイルのグローバル・スコープに入れることができます。最初にサイズ定数を定義(初期化)してください。 –

関連する問題