从命令行读取常量作为全局变量

时间:2015-06-11 14:19:54

标签: c++ class constants

在我的程序中,我定义了一个标题constants.h,我在其中定义将在我的程序中使用的常量,该常量包含多个类。不,我想从命令行读取常量并初始化这些常量,以便它们可以像以前一样使用。

constants.h:

const int FOO = 10;

classA.cpp:

#include "constants.h" 
// uses FOO 

classB.cpp:

#include "constants.h" 
// uses FOO

我的想法是读取FOO的值,并在主类中创建对象时将其作为成员变量传递给两个类。但我不认为这是一个好主意,因为冗余。

2 个答案:

答案 0 :(得分:3)

您的程序有多个类,所以我认为您使用面向对象的范例进行编程 - 在这些项目中不鼓励使用全局变量。当然,引入信息冗余也很糟糕。

你可以做的是创建一个存储所有常量的新类,并负责在命令行中读取它们。然后,您可以在classAclassB以及其他需要这些常量的地方存储对此类对象的引用

答案 1 :(得分:2)

如前面的回答所述,你不应该在面向对象的编程中声明全局变量。

但我认为你要做的是在运行时定义变量并使它们保持不变,以便其他类在将来不会发生变化。要解决此问题,您可以使用全局变量定义一个类,并在全局范围内创建此类的实例。

同样最有效的方法是为变量值创建配置文件而不是命令行参数。