我正在尝试unique_ptr
在将aunique_ptr
用作基类的函数中使用to派生类。就像是:
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 <派生,std :: default_delete <派生>>”到“ const std :: unique_ptr <基本,std :: default_delete <基本>>”的合适的用户定义转换
如果我更改f
为take unique_ptr<Derived> const &derived
,则效果很好,但这不是我想要的。
难道我做错了什么?我该怎么办才能解决此问题?
我正在使用Visual Studio 2012。
shared_ptr
。