A std::unique_ptr
- это контейнер объекта, содержащийся объект должен быть инициализирован, как если бы это был неумный указатель, он не создается автоматически с помощью черной магии.
То, что вы делаете, примерноэквивалентно
datacenter* dc = nullptr;
dc->get_elements();
Сначала вам нужно определить объект:
auto dc = std::make_unique<datacenter>();
Имейте в виду, что вам повезло, что вы использовали std::unique_ptr
, потому что неинициализированная переменная содержала бы мусорзначение (вместо nullptr
), затрудняющее отладку в реальном примере.