gpt4 book ai didi

c++ - 在主循环外的多个文件上定义全局变量

转载 作者:行者123 更新时间:2023-11-27 23:48:12 25 4
gpt4 key购买 nike

我知道这不是很好,但我的程序中需要跨多个文件的全局变量。这些是我的图形窗口的变量:

  • 姓名
  • 尺寸
  • 状态

.

我知道我可以创建一个 .h 文件并声明所有变量:

#pragma once

extern std::string GameName;
extern sf::RenderWindow Window;
extern std::string Status;

.

然后我想在我的 main.cpp 中定义我的变量,这样所有文件都可以访问这些值。但我不能定义它们,除非它们在 int main() 循环中。有没有其他方法,这样我就可以不在主循环中定义这些变量?

编辑

使用 Visual Studio 2017。错误:

LNK2001 unresolved external symbol "class sf::RenderWindow Window" (?Window@@3VRenderWindow@sf@@A) Cubes Library C:\Users\George\Documents\C++\Files\Libraries\Cubes Library\Cubes Library\Cubes Library.obj 1

.

LNK2001 unresolved external symbol "class std::basic_string,class std::allocator > Status" (?Status@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) Cubes Library C:\Users\George\Documents\C++\Files\Libraries\Cubes Library\Cubes Library\Cubes Library.obj 1

.

LNK1120 2 unresolved externals Cubes Library C:\Users\George\Documents\C++\Files\Libraries\Cubes Library\Debug\Cubes Library.dll 1

最佳答案

您可以在 main.cpp 文件中声明它们,但为了使它们可以全局访问,您必须在主函数/循环之外定义它们。如果您在主函数/循环中对它们进行 decalre,则它们是局部变量并且不能(轻易)全局访问。以这种方式结合您建议的头文件将起作用。

// Global variables...
std::string GameName;
sf::RenderWindow Window;
std::string Status;

int main()
{
return 0;
}

您也可以将它们放在另一个文件中,例如 globals.cpp。

关于c++ - 在主循环外的多个文件上定义全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48855168/

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