以下代码在 MSVC11 上失败并出现错误
cannot convert parameter 1 from 'std::unique_ptr<DerivedClass>' to 'std::unique_ptr<BaseClass>'
编码:
class BaseClass
{ };
class DerivedClass : public BaseClass
{ };
void MyFunction(std::unique_ptr<BaseClass> obj)
{ };
int main()
{
auto ptr = std::unique_ptr<DerivedClass>(new DerivedClass);
MyFunction(ptr); // fails, with error about cannot convert type
// MyFunction(std::move(ptr)); // This will work
}
正如答案中指出的那样,原因std::move
丢失了,但是错误消息使我感到困惑以至于无法发布问题,因此我对其进行了更新,因此任何同样困惑的人都有最好的机会找到答案。