我正在为计算机科学课项目创建一个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内完整代码的链接。