Не могу добавить в вектор умный указатель

213
02 августа 2017, 21:26

Имеется класс MyClass, разумеется с конструктором, нужно создать вектор умных указателей на объекты этого класса. Сам указатель создается, но при попытке добавления в вектор вылезает ошибка . Что я упустил?

#include <memory>
#include  <vector>
using namespace std;
Int main()
{
    vector<unique_ptr<MyClass>> vectorPtr;
    unique_ptr<MyClass> p1(new MyClass);
    // до этого момента всё в порядке
    vectorPtr.push_back(p1);
    return 0;
}
Answer 1

std::unique_ptr не имеет конструктора копирования, поэтому, чтобы поместить его в вектор, его нужно переместить туда:

vectorPtr.push_back(std::move(p1));

Или так:

vectorPtr.push_back(std::make_unique<MyClass>())

Либо же создавать прямо в векторе:

vectorPtr.emplace_back(new MyClass);
READ ALSO
Отображение контента по кнопка jquery

Отображение контента по кнопка jquery

ПриветствуюСверстал страницу на bootstrap'e

250
Валидация формы c input

Валидация формы c input

Здравствуйте, мне не хватает стандартной функции required для input сейчас мне надо сделать следующее

226
Удаление текста по клику в диве

Удаление текста по клику в диве

Есть отправка сообщенийОна работает, но когда я отправляю сообщение, текст в диве остается

232