2016-11-10 45 views
1

我很新的C数组的元素++,所以如果有一个更简单的方法来得到我想要的,随时告诉我什么?C++定义功能外

我有含有常量的头我需要在我的代码中包含任何地方以便在方程中使用它们。诸如温度和压力之类的东西。在我使用恒定质量的单个物体之前。

real massObject   = 7.35619e-25; 

现在我想拥有多个质量,以便能够使用更多的对象。 所以我试图定义我创建的数组的元素。

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

后来我发现,这是不可能的定义函数外的每一个元素,但我不想使用的功能,因为我将不得不每次调用它。另外通过是没有选择的。 有没有一种方法来定义全局元素?

感谢

+0

实际上,你可以在一个函数内声明这个数组为'static',这样它将在你的程序的整个生命周期中(而不是每次调用这个函数)初始化一次。你可以进一步向函数传递一个输入参数,告诉它你希望它返回的数组中的哪个元素。因此,你可以将这个数组封装在一个狭窄的接口下,并有你选择的访问级别(这里我描述了一个简单的只读访问级接口)。另外,如果你想进一步优化,你可以声明函数'inline'。 –

回答

1

可以初始化数组:

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

与此相关的,你不能把这个在您在多个源文件包含一个头文件。这是因为那么数组将被多次定义,并且您只能在程序中定义一个定义。

在表头可以声明阵列:

extern double vmassObject[numObjects]; 

然后,在一个源文件中把定义(与初始化)。

+0

谢谢!初始化作品,但当然不是很好。 当我把定义放在一个源文件中时,它必须再次出现在函数中,我不想要或者我错过了某些东西? –

+0

@TK_B是的,似乎你错过了一些东西,但我不知道是什么。如果您复制粘贴我的答案中显示的定义,则可以将其放在任何源文件的全局范围内。请记住先定义(并初始化)大小常量。 –