【发布时间】:2021-05-18 20:44:24
【问题描述】:
因此,我在这里看到了有关如何通过提示用户输入然后使用cin 在运行时设置全局常量变量的问题。但是,我需要能够基于传递给 main 的参数之一(即来自argc/argv)设置一个常量全局变量。我发现的所有解决方案都涉及在 const 变量声明上方定义构造函数,但如果我只能从 main 访问 argc 和 argv,这将不起作用。
这有可能吗?我该如何实现呢?
编辑:这是关于cin的问题,供参考:Are there any tricks to use std::cin to initialize a const variable?
【问题讨论】:
-
如果您需要使用运行时值更新全局常量,它如何?
-
@specras 如果您看一下我刚刚引用的问题,您会发现实际上可以在运行时设置一次常量。重点是在程序运行时(基于传递的参数)正确设置该变量,然后被程序的其余部分视为常量。
-
你引用的问题没有设置全局常量。
-
@PatrickvD 我怀疑这是否可能以可移植的方式进行,至少不像字面上所说的那样。另一方面,如果您正在寻找特定于实现的解决方案,则可能有非标准方法可以在
main之外访问argc和argv,这样就可以使用任何一个单例模式。 -
@PatrickvD> 实际上只有一个答案,它专门使用
std::cin,这是 C++ 标准的特殊情况,可用于全局初始化程序,而不会遇到初始化顺序惨败。这是一个非常特殊的边缘案例。
标签: c++ constants parameter-passing command-line-arguments