Я пытаюсь использовать unique_ptr
для производного класса в функции, которая переводит unique_ptr
в базовый класс. Что-то вроде:
class Base {};
class Derived : public Base {};
void f(unique_ptr<Base> const &base) {}
…
unique_ptr<Derived> derived = unique_ptr<Derived>(new Derived);
f(derived);
Если я правильно понимаю этот ответ, этот код должен работать, но он вызывает следующие ошибки компиляции:
ошибка C2664: "f": невозможно преобразовать параметр 1 из "std :: unique_ptr <_Ty>" в "const std :: unique_ptr <_Ty> &"
IntelliSense: не существует подходящего пользовательского преобразования из "std :: unique_ptr <Derived, std :: default_delete <Derived >>" в "const std :: unique_ptr <Base, std :: default_delete <Base >>"
Если я изменю f
на брать unique_ptr<Derived> const &derived
, он будет работать нормально, но это не то, что я хочу.
Я делаю что-то неправильно? Что я могу сделать, чтобы обойти это?
Я использую Visual Studio 2012.