在我的实现中,我有一个类向量。每个类别中都有unique_ptr
一个链表。仅在运行时,我才知道应添加到每个链表中的节点数。一些链表可能有零个节点。我班的简化视图是:
class A
{
private:
...
std::unique_ptr< std::list<MyListElement> > ptrList;
...
public:
...
};
多亏了unique_ptr
,我不得不跳过以下工作:首先声明一个复制构造函数和copy-assignment-operator并将它们设置为= delete
,然后为默认构造函数,move-constructor和move-assignment-operator提供定义。完成所有这些之后,我现在准备调用该函数,该函数为每个对象初始化我的链表。
void A::initListElements(unsigned int numElements)
{
if (numElements > 0)
{
std::unique_ptr< std::list<MyListElement> > tmp(new std::list<MyListElement>);
ptrList = std::move(tmp);
}
else
{
ptrList = 0;
}
}
这是正确的做法吗?有什么方法可以避免创建临时的unique_ptr'tmp'吗?
您可以使用reset
方法避免临时
ptrList.reset(new std::list<MyListElement>);
else
我相信,您不需要声明。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句