需要建议在整个项目中共享常量值

时间:2014-02-27 13:07:19

标签: c++

我目前正在开发游戏并使用C ++。 我需要一些常量值,这些值必须全局可用于我的所有项目文件。目前我处理这个的方式是我有一个名为Constants.h的头文件,它声明了所有static const typedef name = value。 此文件包含在需要这些值的每个项目文件中。

我面临的问题是我的项目规模增加,因此构建时间也增加了。我明白为什么会发生这种情况,虽然当我第一次开始我的项目似乎可行时,它现在已成为一个问题。

你能否建议我在我的项目中采用另一种方式来处理这样的事情? 谢谢。

3 个答案:

答案 0 :(得分:3)

不是定义静态变量,为什么不只是声明它们,然后在源文件中定义它们呢?

所以在头文件中

extern const int some_global_const;

在源文件中

const int some_global_const = 1;

我以前使用的另一个系统是拥有某种属性系统,你有一个键值对的“地图”(通常使用引擎盖下的std::map),其中键是一个字符串,值可以转换为任何其他类型。

然后,您可以执行Config::get("some_global_const")之类的操作来获取房产。

可以这样做以设置编译时属性,并在运行时读取属性。

答案 1 :(得分:1)

对于游戏,我建议将全局常量放入配置文件中,在启动时读取它,并使它们在属性系统中可用。

这样,将来你会非常灵活,你可以轻松地改变和测试不同的值而不需要编译,当你的项目开始变得非常大时,这是非常重要的。

答案 2 :(得分:0)

您可以将它们放在静态类中。

Globals.h

class Globals
{
public:
    static const int something;
};

Globals.cpp

#include "Globals.h"
const int Globals::something = 10;

其他源文件:

#include "Globals.h"

void f()
{
    int x = Globals::something;
}