У меня есть класс C ++, который принимает строку (путь к файлу) в своем конструкторе, загружает этот файл в JSON и затем использует некоторые из переменных JSON для инициализации другого члена.
Поскольку файл должен быть загружен первым и инициализирован JSON (из потока), я не могу инициализировать thing
в списке инициализатора члена. Должен ли я использовать другой класс-оболочку для JSON, использовать new ...? Как мне этого добиться?
class Dummy
{
std::string _configFilePath;
json configJson;
Thing thing;
Dummy(std::string configFilePath = "../config.json") :
_configFilePath(configFilePath)
{
std::ifstream ifs(configFilePath);
ifs >> configJson;
thing(configJson["whatever"]); // thing can't be initialized here
}
};
Обратите внимание, что thing
не является конструируемым по умолчанию.