Я предполагаю, что вы на самом деле используете std::make_unique<Foo>()
.
Так как это ошибка в конструкции, это, скорее всего, проблема с типом Foo
, а не с тем, что вы пытаетесь сделать сЭто.Хотя это также может происходить из функции set_bar()
.
Использование std::make_unique<Foo>()
попытается использовать конструктор по умолчанию (тот, что не имеет аргументов).Может показаться, что ваш тип Foo
не имеет конструктора по умолчанию.Хотя, без реализации Foo
под рукой, это всего лишь предположение.Вам нужно дать std::make_unique<Foo>()
аргументы, которые соответствуют одному из определенных конструкторов Foo 1 .
Re: Что вы пытаетесь сделать - похоже, это должно сработать.Хотя, поскольку он принимает необработанный указатель, вам следует рассмотреть возможность выполнения некоторых проверок nullptr
.
1: если определен хотя бы один конструктор, где он не является конструктором по умолчанию, конструктор по умолчанию удаляется .