最佳答案
我试图在一个函数中使用 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: : only _ ptr < _ Ty >’转换为‘ const std: : only _ ptr < _ Ty > &’
IntelliSense: 没有合适的用户定义转换,从“ std: : only _ ptr < Derived,std: : default _ delete < Derived > >”到“ const std: : only _ ptr < Base,std: : default _ delete < Base > >”不存在
如果我把 f
改成 unique_ptr<Derived> const &derived
,它工作得很好,但这不是我想要的。
我做错什么了吗? 我该怎么做才能解决这个问题?
我正在使用 Visual Studio 2012。