我试图在一个接受基类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
改为 take unique_ptr<Derived> const &derived
,它可以正常工作,但这不是我想要的。
难道我做错了什么?我能做些什么来解决这个问题?
我正在使用 Visual Studio 2012。