我有一些包含 const
的代码全局变量;代码需要扩展以支持参数化,即,基于参数,一些变量必须改变。碰巧有些需要改变的变量是全局的const
file1.h
const double a = 2;
const double b = 3;
file.h被多个不同的.cc
继承使用 a
和 b
.
在线阅读后,我了解了 extern
关键词。因此,根据一些指导原则,我执行了以下操作。
1) 声明a
和 b
作为externs
在头文件中:file.h:
extern const double a;
extern const double b;
2) 创建了一个 file.cc
我在其中使用函数为 a
赋值的文件和 b
:
void setConsts(double parameter){
/* request the linkage */
extern const double a;
extern const double b;
if (parameter == 9){
a = 2 * 9;
b = 3 * 9;
}
else if (parameter == 10){
a = 2 * 10;
b = 3 * 10;
}
else{
std::cout<<"parameter not supported"<<std::endl;
现在可能是因为 a
和 b
是 const
我收到:
error: read-only variable is not assignable
改变全局的好方法是什么const
s 变成可以通过函数定义的全局变量,但仍然确保它们在运行时不会被更改?
最佳答案
您不能写入const
变量。这就是它们首先成为 const
的全部意义。
如果您确实需要它们是非const
,请从它们中删除“const”关键字并重新编译您的应用程序。
注意:使用 const_cast
将不 工作并且会导致未定义的行为(不要去那里),因为对象最初是 const。所以甚至不要考虑这一点(顺便说一句,“C 风格转换”也是一个 const 转换)。
关于c++ - 如何将全局常量变量更改为可以通过函数分配的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934435/