Так я использую пользовательский вектор контейнер из: https://github.com/patr0nus/Vector/blob/master/Vector.hПользовательские вектор не поддерживает unique_ptr
, и я пытаюсь создать вектор Пойнтинга unique_ptr к объекту пользовательского класса.
Раньше завершаться:
error: object of type 'std::__1::unique_ptr std::__1::default_delete>' cannot be assigned because its copy assignment operator is implicitly deleted
Я установил его, добавив следующий код vector.h:
void push_back(T&& val)
{
resize(m_size + 1);
m_container[m_size - 1] = std::move(val);
}
Теперь проблема, я не могу перебрать этот вектор и другие функции, такие как swap
терпят неудачу:
no matching function for call to 'swap'
swap(*__x4, *__x5);
candidate template ignored: could not match 'tuple' against 'unique_ptr'
swap(tuple<_Tp...>& __t, tuple<_Tp...>& __u)
мне нужно некоторое руководство о том, как исправить тыс проблемы.
Этот вектор, кажется, предназначен для использования с POD. –
Использование 'std :: vector' является решением проблемы. Зачем вам этот заказ в первую очередь? Проблема с реализацией заключается в том, что она абсолютно требует, чтобы 'T' был CopyConstructible, когда' std :: unique_ptr' очень не является. – AndyG
Ум ..... Почему бы просто не использовать std :: vector? – mascoj