use*_*967 6 c++ static const global-variables
我需要在整个程序中引用各种常量.我一直在使用静态const类成员,而不是使用全局变量:
class Human
{
public:
static const int HANDS = 2;
static const int FINGERS = 10;
};
Run Code Online (Sandbox Code Playgroud)
问题是我需要从XML数据文件中读取值.我知道我可以用函数初始化一个静态成员:
const int Human::HANDS = ReadDataFromFile();
Run Code Online (Sandbox Code Playgroud)
由于初始化顺序只能在同一个编译单元中预测,因此我必须在同一个CPP文件中定义所有这些顺序.这不是一个真正的问题,但它有点混乱.
真正的问题是,在我的代码甚至有机会运行之前,我的ReadDataFromFile()函数中的所有内容都需要准备好使用.例如,我有一个XML类,通常处理从文件中读取XML数据.但是,我不能在这种情况下使用它,因为静态成员在我的XML类对象构造之前被初始化.
除了随处可见的全局变量之外,还有更好的解决方案来组织常量吗?
尝试初始化变量时,需要读取XML文件.但是,您可以使用static函数内的对象来获取它:
XMLData const& access_config_file() {
static XMLData data = readXMLData();
return data;
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以access_config_file()从需要访问它的位置进行引用并将值拉出.该static变量被初始化第一次函数被调用.
| 归档时间: |
|
| 查看次数: |
2368 次 |
| 最近记录: |