Как передать уникальный аргумент ptr конструктору или функции?



Я новичок в перемещении семантики в C++11, и я не очень хорошо знаю, как обрабатывать unique_ptr параметры в конструкторах или функции. Рассмотрим этот класс, ссылающийся на себя:



#include <memory>

class Base
{
public:

typedef unique_ptr<Base> UPtr;

Base(){}
Base(Base::UPtr n):next(std::move(n)){}

virtual ~Base(){}

void setNext(Base::UPtr n)
{
next = std::move(n);
}

protected :

Base::UPtr next;

};


это, как я должен написать функции, принимающие unique_ptr аргументы?



и мне нужно использовать std::move в коде вызова?



Base::UPtr b1;
Base::UPtr b2(new Base());

b1->setNext(b2); //should I write b1->setNext(std::move(b2)); instead?
728   0  

Comments

    Ничего не найдено.