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

Read constants from command line as global variables

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

constants.h:

const int FOO = 10;

classA.cpp:

#include "constants.h" 
// uses FOO 

classB.cpp:

#include "constants.h" 
// uses FOO

我的想法是读取 FOO 的值,然后在主 class 中创建 object 时将其作为成员变量传递给两个 classes ].但我认为这不是一个好主意,因为存在冗余。

您的程序有多个 class,所以我想您正在使用面向对象的范例进行编程 - 在此类项目中不鼓励使用全局变量。当然引入信息冗余也是不好的。

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

如上一个回答所述,您不应该在面向对象编程中声明全局变量。

但我认为您正在尝试做的是在 运行 时间定义变量并使它们保持不变,以免将来在其他 class 中发生变化。为了解决这个问题,你可以用全局变量定义一个 class 并在全局范围内创建这个 class 的实例。

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