从我通过阅读大部分在这里查询时发现的问题来看,在查找唯一指针时弹出,我认为它应该提供Builder模式描述的行为。这是unique_ptr的正确用法吗?
我希望Builder的任何实例(或其子类,因为它没有实现任何修改正在构建的对象的过程)拥有正在构建的对象,直到Close返回指向调用者的唯一指针,指出来电者拥有所有权。
Builder.h
template <class type> class Builder
{
public:
~Builder();
unique_ptr<type> Close();
protected:
Builder();
unique_ptr<type> _uptr;
};
Builder.cpp
template<class type> Builder<type>::Builder()
{
uptr = make_unique<type>();
}
template<class type> Builder<type>::~Builder()
{}
template<class type> unique_ptr<type> Builder<type>::Close()
{
return uptr;
}
我是否懂得按值传递的唯一指针的语义?
(包括和为了简洁省略/易读性命名空间)
谢谢!这就说得通了。我有一个暗示,我没有适当地转移。 – ophilbinbriscoe