雖然使用C#工作了好幾年,但用C++完成工作對我而言仍然有些困難。我完全接受智能指針的使用,但現在我正面臨以下難題:我有一個struct Foo
,例如,使用包含std :: unique_ptr的std :: vector構造一個類時出現錯誤
struct Foo
{
Foo(std::unique_ptr<Bar> bar) : m_myBar(std::move(bar)) {}
private:
std::unique_ptr<Bar> m_myBar;
};
在不同的類,我想有一個包含美孚的實例的載體,但是下面一行
std::vector<Foo> m_Foos;
產量編譯錯誤說,拷貝構造函數被刪除。在SO線程「Why can I not push_back a unique_ptr into a vector?」中給出瞭解釋和補救措施。然而,問題涉及到唯一指針的向量,而我有一個包含唯一指針的結構向量。建議的解決方案是使用移動語義,但如何適用於我的情況?或者我應該做其他事情?
您是否使用Visual Studio? – Angew 2014-09-30 07:54:31
不,我使用基於Qt 5.3.1的Qt Creator 3.1.2和mingw32-make.exe。這很重要嗎? – SimonAx 2014-09-30 07:55:57
哪個編譯器?我認爲mingw gcc,這應該是好的。 Visual Studio的編譯器不能自動生成移動窗口。但矢量線本身不會導致錯誤,請參閱我的答案中的鏈接。它可能是封閉在一個班,這會影響該班的副本嗎? IOW,請發佈[MCVE](http://stackoverflow.com/help/mcve)。 – Angew 2014-09-30 08:09:48