使用C++; 我通过制作一个小游戏来学习C++。随着代码的增长,我发现自己花在寻找变量和函数上的时间越来越多。为了避免这种情况,我将其拆分为多个文件,所有文件按以下顺序导入到单个文件: utils.cpp:包含宏、变量类型的别名和一些通用函数 win32.cpp:包含WinMain入口点和从game.cpp调用update()和的游戏循环 structures.cpp:下面所有文件中使用的大多数结构和类的定义 globals.cpp:所有函数都可以访问的变量,如map_size等 renderer.cpp:通过修改缓冲区中的像素值进行绘制的函数 game.cpp:更多特定于游戏的函数,包含初始化游戏的函数和调用renderer.cpp的game logic update()函数

使用C++; 我通过制作一个小游戏来学习C++。随着代码的增长,我发现自己花在寻找变量和函数上的时间越来越多。为了避免这种情况,我将其拆分为多个文件,所有文件按以下顺序导入到单个文件: utils.cpp:包含宏、变量类型的别名和一些通用函数 win32.cpp:包含WinMain入口点和从game.cpp调用update()和的游戏循环 structures.cpp:下面所有文件中使用的大多数结构和类的定义 globals.cpp:所有函数都可以访问的变量,如map_size等 renderer.cpp:通过修改缓冲区中的像素值进行绘制的函数 game.cpp:更多特定于游戏的函数,包含初始化游戏的函数和调用renderer.cpp的game logic update()函数,c++,C++,我喜欢在同一个地方有很多变量,比如globals.cpp,因为我在测试时经常编辑它们的值 现在这一切正常,但函数、对象和变量的顺序会导致问题。例如,一些结构需要访问全局变量,而一些全局变量引用结构。有时,把什么代码放在哪里就成了一个大难题 有没有更好的方法来组织事物以最小化这种排序顺序依赖性?我认为大多数人会建议您尽可能远离全局变量。 从面向对象的角度来看,我可能会将变量组织到与其关联的类中,然后为每个类创建一个头文件(.h),并在需要它们的地方导入头文件。例如: 您可能有一个类“MapObje

我喜欢在同一个地方有很多变量,比如globals.cpp,因为我在测试时经常编辑它们的值

现在这一切正常,但函数、对象和变量的顺序会导致问题。例如,一些结构需要访问全局变量,而一些全局变量引用结构。有时,把什么代码放在哪里就成了一个大难题


有没有更好的方法来组织事物以最小化这种排序顺序依赖性?

我认为大多数人会建议您尽可能远离全局变量。 从面向对象的角度来看,我可能会将变量组织到与其关联的类中,然后为每个类创建一个头文件(.h),并在需要它们的地方导入头文件。例如:

您可能有一个类“MapObject”或“MapBuilder”,其中包含成员变量,如“map_size”,您可以通过调用“MapObject.map_size=newValue”随时通过“MapObject”的实例(如“MapObject”)访问这些变量(只要存在该类的实例)。至于查找这些值以编辑初始值,您基本上已经在归档系统中组织了常量。您有一个名为MapObject的.cpp和头文件,您知道它包含所有与map对象相关的常量。您可能可以在IDE中的文件中搜索,例如“map”,以获得与map相关的常量

这将使管理排序更容易,因为您知道常量仅在需要时存在(即,当存在使用它们的对象实例时)


您还可以研究一种称为“singleton”的设计模式,它在某些情况下可能对您有用。

转发声明:永远不要导入.cpp文件。而是将声明移动到标头,然后导入标头。作为一个额外的好处,小的改动应该更快地编译。“我通过制作一个小游戏来学习C++”好的,但是请考虑一本好的基础书。当然是MatG。关于从哪里开始有什么建议吗?语法很容易在网上找到,但我正在寻找一些“最佳实践”的东西too@Jompa我先从C++(Stroustrup)的旅行开始,阅读非常容易和快速。这是一个很好的基础。然后,开发的是C++编程语言(StruouStrup)。C++编码标准(萨特,Alexandrescu)而不是单体,建议应该是使用头文件FixHMM,是的,现在我又读了一遍。我假设OP已经在使用头文件了,如果他正在构建这么复杂的东西,那么问题就出在设计模式上。不过,我确实提到了如何使用头文件进行结构。我应该删除我的答案@MooingDuck吗?