作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
出于某些奇怪的原因,我总是忘记数组的确切语法。如何在 header 中创建一个数组并在构造函数中对其进行初始化?是否可以在 header 中初始化并定义它?
最佳答案
您可以使用 extern
关键字在 header 中声明变量,但在 header 中定义可能会导致多个定义和链接器错误(除非您使用 static
关键字和header-guards,在这种情况下,您将为每个翻译单元创建单独的数组实例)。
例如:
标题
extern int array[ARRAY_SIZE];
static int stArray[ARRAY_SIZE] = {initialized static array};
X.CPP
#include the header
int array[ARRAY_SIZE] = {initialize here}
... some code
int i = array[index]; //access the array initialized in X.CPP
int j = stArray[index]; //access the array initialized in X.CPP
//when including the header
Y.CPP
#include the header
// don't initialize
...
in some code do:
int i = array[index]; // you'll access the array initialized in X.CPP.
int j = stArray[index]; //access the array initialized in Y.CPP when
// including the header, not the same as in X.CPP
编辑
Re 类成员 - 它们通常在头文件中定义,但它们是在创建类实例(对象)时创建的,并且应该在构造函数中初始化。除非您将它们标记为 static
,然后您必须在某个 CPP 文件中定义它们(以类似于 extern
变量的方式)。
此外,评论中提到:全局变量不应在调用 main
之前访问(即:一个全局/静态变量不应基于另一个全局变量的值进行初始化/静态值)。这可能会导致称为 Static Initialization Fiasco 的问题.
关于c++ - 数组拆分为头文件和源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772161/
我是一名优秀的程序员,十分优秀!