Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:使动态初始化的变量可用于其他.cpp文件_C++ - Fatal编程技术网

C++ C++;:使动态初始化的变量可用于其他.cpp文件

C++ C++;:使动态初始化的变量可用于其他.cpp文件,c++,C++,我有一个int vertexCount变量,它是通过读取loader.cpp上的文本文件来初始化的,我想将它提供给一个单独的model.cpp文件 我应该申报吗 外部垂直计数 关于model.cpp?还是在.h上 我要在您的.h中声明类似的内容: extern VertexCount *vertexCount; 然后在一个且仅一个.cpp文件(例如,“main.cpp”)中定义(分配空间): 我要在你的表格中声明类似的内容。h: extern VertexCount *vertexCount;

我有一个
int vertexCount
变量,它是通过读取
loader.cpp
上的文本文件来初始化的,我想将它提供给一个单独的
model.cpp
文件

我应该申报吗

外部垂直计数


关于
model.cpp
?还是在
.h

我要在您的.h中声明类似的内容:

extern VertexCount *vertexCount;
然后在一个且仅一个.cpp文件(例如,“main.cpp”)中定义(分配空间):


我要在你的表格中声明类似的内容。h:

extern VertexCount *vertexCount;
然后在一个且仅一个.cpp文件(例如,“main.cpp”)中定义(分配空间):


您正向声明
extern int vertexCount,并在.cpp:
int vertexCount中声明(即分配内存)。您可以立即初始化它(
int vertexCount=1;
),也可以稍后在包含代码的任何文件中的代码中进行初始化(当然,您需要包含头)

但是,在变量真正初始化之前,您有责任不访问它


你也可以考虑把变量放进一个类中,这将确保在构造函数或第一个访问中都有适当的初始化(你需要一个吸收器),或者在后台,等等。这种方式可能是最干净的。

< p>你向前声明<代码> ExtIn int ValtCtUnt;<在适合该变量的标头中编码>,并在.cpp:
int vertexCount中声明(即分配内存)。您可以立即初始化它(
int vertexCount=1;
),也可以稍后在包含代码的任何文件中的代码中进行初始化(当然,您需要包含头)

但是,在变量真正初始化之前,您有责任不访问它


你也可以考虑把变量放进一个类中,这将确保在构造函数或第一个访问中都有适当的初始化(你需要一个吸气剂),或者在后台,等等。这种方式可能是最干净的。

它是如何“动态初始化”的?创建一个支持对数据执行的操作的类,并将数据存储保持在内部(如
std::vector
等)。然后传递该类的一个实例进行操作。无论哪种方式,都没有区别。在model.cpp中,你可以声明extern int vertexCount,每个人都会很高兴。下面是龙:不管你怎么做,你怎么能确定
model.cpp
只有在初始化完成后才会访问该值?在C++中,对于不同翻译单位之间的初始化顺序几乎没有保证。@艾伦:对于这样的保证,需要在一个类内移动自立变量,这将负责初始化。但对于小而简单的项目,像“好的,在代码完成之前我不应该碰这个变量”这样的方法是可以的。它是如何“动态初始化”的?我不会说上面的任何一个。创建一个支持对数据执行的操作的类,并将数据存储保持在内部(如
std::vector
等)。然后传递该类的一个实例进行操作。无论哪种方式,都没有区别。在model.cpp中,你可以声明extern int vertexCount,每个人都会很高兴。下面是龙:不管你怎么做,你怎么能确定
model.cpp
只有在初始化完成后才会访问该值?在C++中,对于不同翻译单位之间的初始化顺序几乎没有保证。@艾伦:对于这样的保证,需要在一个类内移动自立变量,这将负责初始化。但对于小而简单的项目,像“好的,在代码完成之前我不应该碰这个变量”这样的方法是可以的。谢谢,但我希望vertexCount是一个int(我意识到我没有写它,呵呵,我太习惯Python了),请解释一下为什么要将它声明为指针?是不是因为我的疏忽?是的,只是因为我的疏忽。听起来你想在.h标题中显示“extern int vertexCount”,在.cpp标题中显示“int vertexCount=0”。谢谢,但我想让vertexCount是一个int(我意识到我没有写它,呵呵,我太习惯Python了),请解释一下为什么你要将它声明为指针?是不是因为我的疏忽?是的,只是因为我的疏忽。听起来你希望在.h头中有“extern int vertexCount”,在.cpp中有“int vertexCount=0”。初始化它的.cpp应该实现声明为extern的头,对吗?@omgzor:其实没有必要,但这是通常的方式。当然,.cpp文件应该
#包含
头文件(但我不确定它是否严格必要)。初始化它的.cpp应该实现声明为extern的头文件,对吗?@omgzor:实际上没有必要,但这是通常的方式。当然,.cpp文件应该
#包含
头文件(但我不确定是否严格必要)。