我的代碼中的某處我有一個本地的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