【发布时间】:2016-08-13 15:51:32
【问题描述】:
我有一些包含const 全局变量的代码;代码需要扩展以支持参数化,即基于参数,一些变量必须改变。恰好有些需要更改的变量是全局的consts。
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 是 consts 我收到了:
错误:只读变量不可赋值
将全局consts 更改为可以通过函数定义的全局变量,但仍确保它们在运行时不会被更改的好方法是什么?
【问题讨论】:
标签: c++ c++11 global-variables constants extern