Итак, у меня есть ситуация, когда мне нужно сохранить вектор абстрактного типа, так как я понимаю, это требует использования вектора unique_ptrs или аналогичного.Перемещение вектора unique_ptr <T>
Поэтому, чтобы перемещаться по экземплярам класса, содержащего вектор unique_ptrs, мне нужно определить конструктор перемещения, который я сделал.
Однако, как показано на примере ниже, это, похоже, не согласуется с компилятором (msvc), который дает мне следующую ошибку.
Ошибка 1 Ошибка C2280: 'станд :: unique_ptr> :: unique_ptr (Const станд :: unique_ptr < _Ty, станд :: default_delete < _Ty >> &)': попытка сослаться проколотой функцию
class SomeThing{
};
class Foo{
public:
Foo(){
}
Foo(const Foo&& other) :
m_bar(std::move(other.m_bar))
{};
std::vector<std::unique_ptr<SomeThing>> m_bar;
};
int main(int argc, char* argv[])
{
Foo f;
return 0;
}
почему Const? – paulm
Избавиться от 'const'. – Mysticial
какая версия визуального C++? потому что это не поддерживается до VS2013 – Mgetz