C++ 数组拆分为头文件和源文件

C++ 数组拆分为头文件和源文件,c++,C++,出于某种奇怪的原因,我总是忘记数组的确切语法。如何在标头中创建数组并在构造函数中初始化它?是否可以在标题中初始化并定义它?您可以使用extern关键字在标题中声明变量,但在标题中定义可能会导致多个定义和链接器错误(除非您使用static关键字和标题保护,在这种情况下,您将为每个翻译单元创建单独的数组实例) 例如: 标题 extern int array[ARRAY_SIZE]; static int stArray[ARRAY_SIZE] = {initialized static array}

出于某种奇怪的原因,我总是忘记数组的确切语法。如何在标头中创建数组并在构造函数中初始化它?是否可以在标题中初始化并定义它?

您可以使用
extern
关键字在标题中声明变量,但在标题中定义可能会导致多个定义和链接器错误(除非您使用
static
关键字和标题保护,在这种情况下,您将为每个翻译单元创建单独的数组实例)

例如:

标题

extern int array[ARRAY_SIZE];
static int stArray[ARRAY_SIZE] = {initialized static array};
X.CPP

Y.CPP

编辑

重新类成员-它们通常在头文件中定义,但它们是在创建类实例(对象)时创建的,并且应该在构造函数中初始化。除非您将它们标记为
静态
,然后必须在某个CPP文件中定义它们(类似于
外部
变量)


此外,评论中还提到:在调用
main
之前,不应访问全局变量(即:一个全局/静态变量不应基于另一个全局/静态值的值进行初始化)。这可能会导致一个名为。

的问题。好吧,您可以始终使用指针并动态执行此操作…只需记住使用delete[]清除它

在标题中,只需声明一个指针

   int * x = 0;
在cpp中,调用new并使用它执行您需要的操作

   x = new int[15];
   //do stuff
   delete [] x;

我已经对这个问题多读了一点,似乎不可能:这实际上是C++语言的一个缺点——没有办法在C++中初始化非静态数组成员。< /P>忘记语法。你真正需要的是一本好书和查阅基本知识。我找不到任何可以告诉你如何把它拆分为基本语法的书。标题和源。您是否希望拥有类成员数组?或全局变量?请注意,如果在调用main之前(通过全局对象构造)访问

array
,则这是未定义的行为。您将不会收到警告或错误。如果类中的数组不是静态的或外部的,则无法在类中拥有数组?
   int * x = 0;
   x = new int[15];
   //do stuff
   delete [] x;