不能从'std :: unique_ptr <const classtype转换参数1,std :: default_delete <_ty =“”>&gt;' 'const ClassType&amp;'

时间:2017-04-17 22:04:48

标签: c++ vector stl shared-ptr unique-ptr

我正在为计算机科学课项目创建一个C ++文本游戏。我正在使用Microsoft Visual Studio Community 2015.游戏是关于在战斗中使用物品来击败敌人。这些项目返回结果。在这个项目中,我使用std :: shared_ptrs来保存std :: shared_ptrs中的结果,这些结果包含其他类使用的std :: vectors中的项。但是,当我编译一个早期版本的程序,在循环中打印出OffensiveEntity类中的项目向量中的所有项目时,它没有显示任何内容,因此我将所有std :: shared_ptrs替换为唯一的。当我现在编译程序时,我得到三个

Error C2664 'Result::Result(Result &&)': cannot convert argument 1 from 
'std::unique_ptr<const Result,std::default_delete<_Ty>>' to 'const Result &'

关于Result的错误和另一个关于Item的错误。它似乎是关于构造函数,但是当我点击链接时,它只是带我到一些随机的部分&lt;记忆&gt;。可能是因为我如何在循环中使用它们?像:

for (const std::unique_ptr<Item> & i : m_offensiveEntity->GetItems())
{
     //Do something with each pointer
}

if (i->Use() == std::make_unique<const Result>(Result(0, 0, 0)))
{
     //more code
}

是因为Result对象是const的? 如果必要的话,下面是pastebin内完整代码的链接。

0 个答案:

没有答案