Tôi nhận được một vòng lặp mà trong đó tôi sử dụng một hàm trả về std :: unique_ptr cho một đối tượng của một lớp trừu tượng. Tôi muốn lưu trữ các đối tượng này vào một std :: vector thông qua push_back. Nhưng kể từ khi đối tượng thuộc loại trừu tượng tôi nhận được lỗi sau:Làm thế nào để lưu trữ một vector của các đối tượng của một lớp trừu tượng được đưa ra bởi std :: unique_ptr?
error: cannot allocate an object of abstract type
cho dòng
cells.push_back(std::move(*cell));
nơi các tế bào là một std::vector
loại trừu tượng và cell
là loại
std::unique_ptr<AbstractType>&& cell
(Tôi thực sự vượt qua cell
đến lớp xử lý) Tôi biết rằng người ta không thể khởi tạo một loại trừu tượng và như tôi 'm hiểu biết std: di chuyển nhà điều hành nó cần phải nhanh chóng đối tượng bằng cách nào đó?
Ai đó có thể giúp tôi cách quản lý sự cố không? Hoặc nên các chức năng (không phải là một phần của dự án) không trả về một con trỏ duy nhất cho một đối tượng của một loại trừu tượng?
Chúng ta đang nói về 'vector'? Điều đó sẽ không hoạt động. Lưu trữ một 'vector >' thay thế. –
Bạn đã đúng! Tôi đã bị mù, tôi đã thay đổi nó thành 'vector>' và bây giờ nó hoạt động –
soriak
@ R.MartinhoFernandes: +1 trên bình luận của bạn (đó phải là câu trả lời). Bạn phải đọc suy nghĩ! –