Значения, возвращаемые различными методами в libconfig::Config
, являются ссылками на объекты, содержащиеся в объекте libconfig::Config
.
Из документации не ясно, как долго эти ссылки будут действительны, но они, безусловно, будут недействительными, когда объект cfg
будет уничтожен. Они могут быть признаны недействительными, если вы внесете изменения в объект cfg
, но это не указано в документации.
Должна работать реструктуризация вашего кода следующим образом:
libconfig::Setting& GetKey(libconfig::Config& cfg, const char* method)
{
libconfig::Setting &root = cfg.getRoot();
libconfig::Setting &key = root[method];
// How can I return key?
}
libconfig::Config cfg;
cfg.readFile("config.cfg");
libconfig::Setting &key = GetKey(cfg,"A");
key.lookupValue("min",min);
cfg
не уничтожается до тех пор, пока вы не перестанете использовать key
, поэтому вы не должны получать висячие ссылки.