所以我用從一個自定義的矢量容器:https://github.com/patr0nus/Vector/blob/master/Vector.h自定義矢量不支持的unique_ptr
,我試圖創造的unique_ptr指針的向量自定義類對象。
它曾經失敗:
error: object of type 'std::__1::unique_ptr std::__1::default_delete>' cannot be assigned because its copy assignment operator is implicitly deleted
我固定它通過添加以下代碼vector.h:
void push_back(T&& val)
{
resize(m_size + 1);
m_container[m_size - 1] = std::move(val);
}
現在的問題是,我無法遍歷這個矢量和其他功能,如swap
是失敗:
no matching function for call to 'swap'
swap(*__x4, *__x5);
candidate template ignored: could not match 'tuple' against 'unique_ptr'
swap(tuple<_Tp...>& __t, tuple<_Tp...>& __u)
我需要如何解決日一些指導這些問題。
這個載體似乎是專爲使用只有POD類型。 –
使用'std :: vector'是解決方案。爲什麼你首先需要這個定製的?這個實現的問題是絕對需要'T'是CopyConstructible,當'std :: unique_ptr'不是。 – AndyG
嗯......爲什麼不使用std :: vector? – mascoj