我翻阅了一些旧代码,将其中使用的原始指针改为 unique_ptr
。现在,当我尝试编译代码时,会收到以下错误消息:
Error 1 error C2280: 'std::unique_ptr<_Ty, std::default_delete<_Ty>>::unique_ptr(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)' : trying to reference a deleted function d:\visual studio 2013\vc\include\xmemory0
关于这种情况的编译器输出非常庞大 - 为节省空间,在本问题中请参见此处。
据我所知,它与我使用 unique 指针的方式有关。它从这里开始(level.h、第 65-66 行):
typedef std::unique_ptr<Enemy> PEnemy;
std::list<PEnemy> m_enemies;
现在,编译器输出中给我下一个线索是basesource.cpp中的第47行:
std::list<PEnemy> enemies = Game::LEVEL->getEnemies();
为什么会导致问题?我该如何修复此错误?
std::unique_ptr
不可复制。 - juanchopanza