Ho passato un vecchio codice che utilizzava puntatori grezzi e li ho modificati in unique_ptr
s. Ora, quando provo a compilare il codice, ottengo questo messaggio di errore:Errore C2280: tentativo di fare riferimento a una funzione cancellata (unique_ptr)
Errore 1 Errore C2280: 'std :: unique_ptr> :: unique_ptr (const std :: unique_ptr < _Ty, std :: default_delete < _Ty >> &)': il tentativo di fare riferimento a una funzione eliminata d: \ visual Studio 2013 \ VC \ include \ xmemory0
l'output del compilatore per la situazione è enorme - per risparmiare spazio in questa domanda, vedono here .
Per quanto posso dire, ha qualcosa a che fare con il modo in cui utilizzo i puntatori unici. Si parte da qui (level.h, linee 65-66):
typedef std::unique_ptr<Enemy> PEnemy;
std::list<PEnemy> m_enemies;
Ora, il prossimo indizio salgo in output del compilatore è la linea 47 in basesource.cpp:
std::list<PEnemy> enemies = Game::LEVEL->getEnemies();
Perché questo causa problemi? Come posso correggere l'errore?
L'errore ti ricorda che 'std :: unique_ptr' non è copiabile. – juanchopanza