我嘗試運行這段代碼從第一矢量到另一個移動的unique_ptr的,在拷貝構造函數:誤差在移動的std ::的unique_ptr
class Text
{
struct paragraph
{
int index;
string text;
};
vector<unique_ptr<paragraph>> paragraphs;
public:
Text()
{
paragraphs.push_back(unique_ptr<paragraph>(new paragraph));
}
Text(const Text & t)
{
for(int i = 0; i < (int)t.paragraphs.size(); i++)
{
paragraphs.push_back(move(t.paragraphs[i]));
}
}
};
,我得到這個錯誤:
1>c:\program files\microsoft visual studio 10.0\vc\include\xmemory(208): error C2248: 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member declared in class 'std::unique_ptr<_Ty>'
1> with
1> [
1> _Ty=Text::paragraph
1> ]
// Etc.
** unique ** _ptr。 'vector :: push_back'製作一個副本。但'unique_ptr'沒有公開的拷貝文件。 – StoryTeller 2013-02-14 10:21:40
那麼這是怎麼回事? – user1544067 2013-02-14 10:22:40
@StoryTeller:不一定,重載'push_back'需要右值引用。 – interjay 2013-02-14 10:22:43