在我的程序中,我定义了一个标题constants.h
,我在其中定义将在我的程序中使用的常量,该常量包含多个类。不,我想从命令行读取常量并初始化这些常量,以便它们可以像以前一样使用。
constants.h:
const int FOO = 10;
classA.cpp:
#include "constants.h"
// uses FOO
classB.cpp:
#include "constants.h"
// uses FOO
我的想法是读取FOO
的值,并在主类中创建对象时将其作为成员变量传递给两个类。但我不认为这是一个好主意,因为冗余。
答案 0 :(得分:3)
您的程序有多个类,所以我认为您使用面向对象的范例进行编程 - 在这些项目中不鼓励使用全局变量。当然,引入信息冗余也很糟糕。
你可以做的是创建一个存储所有常量的新类,并负责在命令行中读取它们。然后,您可以在classA
和classB
以及其他需要这些常量的地方存储对此类对象的引用
答案 1 :(得分:2)
如前面的回答所述,你不应该在面向对象的编程中声明全局变量。
但我认为你要做的是在运行时定义变量并使它们保持不变,以便其他类在将来不会发生变化。要解决此问题,您可以使用全局变量定义一个类,并在全局范围内创建此类的实例。
同样最有效的方法是为变量值创建配置文件而不是命令行参数。