【发布时间】:2019-10-13 20:19:45
【问题描述】:
我正在尝试使用 libconfig 库从外部配置文件中解析变量。
在libconfig 站点上它说:Config 类代表一个配置,Setting 类代表一个配置设置。请注意,按照设计,这些类都不提供公共复制构造函数或赋值运算符。因此,这些类的实例只能通过引用或指针在函数之间传递。
我很难创建一个返回设置类引用的函数(据我了解,返回对本地对象的引用是不受欢迎的。但我不知道如何声明一个全局引用给定上述限制)。在底部,我附上了我尝试对此进行编码的 sn-p,但是它们不起作用。我是 C++ 新手,目前正在阅读一本关于它的教科书,但我对引用和指针的处理仍然感到不安。如果有人能阐明我做错了什么,我将不胜感激。
config.cfg
A=
{
min = 3;
}
代码
libconfig::Setting& GetKey(const char* filename, const char* method)
{
libconfig::Config cfg;
cfg.readFile(filename);
libconfig::Setting &root = cfg.getRoot();
libconfig::Setting &key = root[method];
// How can I return key?
}
libconfig::Setting &key = GetKey("config.cfg","A");
key.lookupValue("min",min);
【问题讨论】:
-
大概你需要在某个地方保持
cfg活着,那么引用将保持有效。可能您应该将cfg传递给GetKey,而不是每次调用GetKey时都打开它? -
@AlanBirtles 我已经尝试实施您的建议,它奏效了!那是因为
key引用了一个(现在)全局对象cfg,因此key也是全局对象吗?