我正在嘗試將 unique_ptr 傳遞給自定義向量類,但我收到主題標題中的錯誤。
我知道你不能複制 unique_ptr ,所以我在傳遞它時嘗試使用 std::move() ,但這似乎並沒有解決我的問題......我哪裡出錯了?
提前致謝
template<typename T>
class VectorSelectable {
public:
void Add(const T& v) {
m_Items.push_back(move(v));
}
private:
vector<T> m_Items;
};
class FunctionType {
int m_Data;
};
int main()
{
VectorSelectable<unique_ptr<FunctionType>> vec;
vec.Add(move(make_unique<FunctionType>()));
return 0;
}
編輯:將 'const' 添加到 'Add(const T& v)'
如果您想同時允許 copy-via-const-ref 和 move-via-rvalue-ref,您可以模板化您的Add
方法並使用通用轉發引用技術,或者明確地編寫兩個重載:
void Add(const T& v) {
m_Items.push_back(v);
}
void Add(T&& v) {
m_Items.push_back(std::move(v));
}
或者
template <typename U>
void Add(U&& v) {
m_Items.push_back(std::forward<U>(v));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句