MSVC11上的以下代码失败并显示错误
cannot convert parameter 1 from 'std::unique_ptr<DerivedClass>' to 'std::unique_ptr<BaseClass>'
Run Code Online (Sandbox Code Playgroud)
代码:
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
}
Run Code Online (Sandbox Code Playgroud)
正如在答案中所指出的那样,原因是std::move缺失了,但是错误信息让我很困惑地发布了问题,所以我已经更新了它,所以任何同样困惑的人都有最好的机会找到答案.
| 归档时间: |
|
| 查看次数: |
861 次 |
| 最近记录: |