我正在阅读一堆来自XML文件的应用程序的“设置”,我希望这些设置驻留在所有我可以访问的函数的命名空间中。我通过在标头中声明命名空间变量为'extern int test'成功完成了这项工作。然后在源文件'int test {0};'中初始化它们。然后在源文件中有一个函数,它读取XML并将值赋给名称空间变量,并且所有内容都是hunky dory。如何使用函数中的值初始化名称空间中的全局常量变量?
问题是我意识到当他们只需要保持不变时,我正在创建~100个可读写全局变量。所以我试图改变我的代码,现在他们是不变的,我不明白这是可能的。下面是我的尝试:
//settings.hpp
#pragma once
//header guard
namespace settings {
extern const int ktest;
}
//settings.cpp
void ReadXML() {
int testvalue{1}; //1 is default values
//here would be some code that gets value form XML and assigns it to testvalue
namespace settings {
const int ktest{testvalue};
}
}
现在的问题是我不能把里面的函数的命名空间值。因此,如果我将它们移到函数ReadXML之外,我也必须移动临时变量,但即使这样也没关系,因为我只需要在函数执行后初始化命名空间变量。我正在努力做甚么?
我想说问题不在于你是否有可变或常量的全局变量。我会说这个问题是全局变量。其中100个。这不是很好的编程习惯。 –
我没有争辩,但如果你有100个全局变量,如果它们不变,它会不会更好?这种改变并不需要我去改变每一个源文件,但至少让它们保持不变,我认为这会有所改进。 – DrTarr