Я пытаюсь использовать библиотеку libconfig для анализа переменных из внешнего файла конфигурации.
На сайте libconfig написано: Класс < href="https://github.com/hyperrealm/libconfig/blob/master/lib/libconfig.h%2B%2B#L439" rel="nofollow noreferrer">Config представляет конфигурацию, а class Setting представляет параметр конфигурации . Обратите внимание, что по дизайну ни один из этих классов не предоставляет открытого конструктора копирования или оператора присваивания. Поэтому экземпляры этих классов можно передавать между функциями только через ссылки или указатели.
У меня возникли трудности с созданием функции, которая будет возвращать ссылку на класс Setting (насколько я понимаю, возврат ссылки на локальный объект не одобряется. Но я понятия не имею, как объявить глобальную ссылку с учетом ограничения выше). Внизу я прикрепил фрагмент своей попытки закодировать это, однако они не работают. Я новичок в С++ и в настоящее время читаю по нему учебник, но я все еще не уверен в своей работе со ссылкой и указателем. Я был бы признателен, если бы кто-нибудь мог пролить свет на то, что я делаю неправильно.
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
? - person Alan Birtles   schedule 28.05.2019key
ссылался на (теперь) глобальный объектcfg
и, следовательно,key
также является глобальным? - person nasw_264   schedule 28.05.2019