【问题标题】:Read constants from command line as global variables从命令行读取常量作为全局变量
【发布时间】:2015-06-11 14:19:53
【问题描述】:

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

constants.h:

const int FOO = 10;

classA.cpp:

#include "constants.h" 
// uses FOO 

classB.cpp:

#include "constants.h" 
// uses FOO

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

【问题讨论】:

  • 使用FOO 作为A 和B 的参数怎么样?如果它们实际上将值用于同一事物,那么它们之间可能存在一个通用功能,您可以将其外包给一个通用基类。

标签: c++ class constants


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 2012-10-06
      • 2015-05-16
      相关资源
      最近更新 更多