Tôi đã sử dụng một số mã cũ đã sử dụng con trỏ thô và thay đổi chúng thành unique_ptr
s. Bây giờ, khi tôi cố gắng để biên dịch mã, tôi nhận được thông báo lỗi này:Lỗi C2280: cố gắng tham chiếu đến hàm đã xóa (unique_ptr)
Lỗi 1 lỗi C2280: 'std :: unique_ptr> :: unique_ptr (std :: const unique_ptr < _Ty, std :: default_delete < _Ty >> &): cố gắng để tham khảo một chức năng xóa d: \ visual studio 2013 \ vc \ include \ xmemory0
sản lượng biên dịch về tình hình là rất lớn - để tiết kiệm không gian trong câu hỏi này, nhìn thấy nó here .
Theo như tôi có thể nói, nó có liên quan đến cách tôi sử dụng các con trỏ độc đáo. Nó bắt đầu từ đây (level.h, dòng 65-66):
typedef std::unique_ptr<Enemy> PEnemy;
std::list<PEnemy> m_enemies;
Bây giờ, các đầu mối tiếp theo tôi nhận được ở đầu ra trình biên dịch là dòng 47 trong basesource.cpp:
std::list<PEnemy> enemies = Game::LEVEL->getEnemies();
Tại sao điều này có gây ra vấn đề không? Làm thế nào tôi có thể sửa lỗi?
Lỗi này nhắc bạn rằng 'std :: unique_ptr' không thể sao chép được. – juanchopanza