#cpp #vector #stl #smart_pointer
Имеется класс MyClass, разумеется с конструктором, нужно создать вектор умных указателей на объекты этого класса. Сам указатель создается, но при попытке добавления в вектор вылезает ошибка . Что я упустил? #include#include using namespace std; Int main() { vector > vectorPtr; unique_ptr p1(new MyClass); // до этого момента всё в порядке vectorPtr.push_back(p1); return 0; }
Ответы
Ответ 1
std::unique_ptr не имеет конструктора копирования, поэтому, чтобы поместить его в вектор, его нужно переместить туда: vectorPtr.push_back(std::move(p1)); Или так: vectorPtr.push_back(std::make_unique()) Либо же создавать прямо в векторе: vectorPtr.emplace_back(new MyClass);
Комментариев нет:
Отправить комментарий