Я был на Unity долгое время и вернулся, чтобы сделать некоторые C++ с использованием Visual Studio 2015 я наткнулся на этот класс определениястанд :: unique_ptr пытается ссылаться на удаленную функцию
class A
{
public:
A();
virtual ~A();
A(const A&) = delete;
A& operator=(const A&) = delete;
private:
…
}
Этот класс динамически распределяется так:
ObjPtr obj = ObjPtr(new A());
где ObjPtr
является тип, определенный и выглядит следующим образом:
typedef std::unique_ptr<A> objPtr;
и добавление этих созданных объектов с использованием std::vector<ObjPtr>
с использованием std::move
. В какой-то момент мне нужно пройти через список объектов, и если я найду что-то, удовлетворяющее моим критериям, сохраните его копию.
ObjPtr keep;
for(auto& object : GetObjectList())
{
if(/*check if its the object I want*/)
{
keep = object;
}
}
Где GetObjectList возвращает const std::vector<ObjPtr>&
.
Но я получаю «попытку ссылки на удаленную функцию». Я сделал несколько поисковых запросов и попытался удалить часть = delete
и даже прокомментировал 2 строки. Я даже пытался сделать
ObjPtr keep = std::move(object);
Но я все еще получаю ошибку удаленной функции. Может ли кто-нибудь увидеть, что я делаю неправильно, или указать мне на некоторые ресурсы, которые могут помочь?
Каков тип 'ObjectList'? – vsoftco
@vsoftco Обновлено мое сообщение! – dwnenr
Вы уверены, что 'ObjectList' не' const'? –