我的代码中的某处我有一个本地的std::unique_ptr<T>
。我需要做的东西与指向的对象,我用一个函数,该函数:修改由std :: unique_ptr指向的对象的函数<T>
std::unique_ptr<T> some_function(std::unique_ptr<T> &t)
{
// do stuff
return t;
}
我这样调用该函数:
std::unique_ptr<T> some_T_ptr(new T(/*args*/));
vector_of_finalized_Ts.push_back(std::move(some_function(std::move(some_T_ptr))));
现在我不知道,有没有更好的方式来获得必要的功能?这似乎有两个动作是非常多余和潜在的危险。我确实有错误处理代码,我没有在这里展示,但那不是重点。
'T some_T = new T(/ * args * /);'是无效的C++。 – 2011-05-07 18:59:07
@Tomalak:已更正。 – rubenvb 2011-05-07 19:03:24
你的代码显示一个右值被传递给'some_function',但'some_function'通过非const左值引用获得它的参数。此代码无效。 – 2011-05-07 19:15:16