gpt4 book ai didi

c++ - 在C++中使用全局变量初始化

转载 作者:行者123 更新时间:2023-12-02 10:11:47 30 4
gpt4 key购买 nike

我已经尝试阅读以下有关创建可在多个文件之间使用的全局变量的线程,但是它将不起作用。
Global Variable within Multiple Files
变量。h

extern const int variable1;
file1.h
class fileOne{
private:
fileTwo ft[variable1];

public:
//some functions...
};
file2.h
class fileTwo{
private:
//some variables

public:
//some functions
};
main.cpp
int main(){
int variable1 = 2;
fileOne fo;
}
当我运行此命令时,编译器将显示以下内容:

error: array bound is not an integer constant before ']' token


是否可以声明全局变量并以上述方式使用它?
另外:这是一个数组吗? fileTwo ft[variable1]; fileTwo是一个类吗?

最佳答案

固定大小的数组需要在编译时指定其大小,这意味着只能使用编译时常量。即使将其声明为extern,也不能将const ed变量用作数组的大小,因为编译器根本不知道该变量的实际值,因为它在另一个转换单元中。
另外,在main.cpp中,您不能将extern的ed变量声明为局部变量,而必须在全局范围内。
对于您要尝试执行的操作,根本没有理由使用extern。只需直接在variable1中声明一个带有常量值的variable.h,然后在需要的地方对该文件进行#include,例如:
variable.h:

#ifndef VARIABLE_H
#define VARIABLE_H

static const int variable1 = 2;

#endif
file1.h:
#ifndef FILE1_H
#define FILE1_H

#include "file2.h"
#include "variable.h"

class fileOne{
private:
fileTwo ft[variable1];

public:
//some functions...
};

#endif
file2.h:
#ifndef FILE2_H
#define FILE2_H

class fileTwo{
private:
//some variables

public:
//some functions
};

#endif
main.cpp:
#include "file1.h"

int main(){
fileOne fo;
}

关于c++ - 在C++中使用全局变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63256855/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com