我得到了一個循環,其中我使用了一個函數將std :: unique_ptr返回給抽象類的對象。我想通過push_back將這些對象存儲到std :: vector中。但由於對象是抽象類型的,我得到了以下錯誤:如何存儲由std :: unique_ptr給出的抽象類對象的向量?
error: cannot allocate an object of abstract type
爲線
cells.push_back(std::move(*cell));
,其中細胞是抽象類型的std::vector
和cell
類型爲
std::unique_ptr<AbstractType>&& cell
(我實際上將cell
傳遞給處理程序類) 我知道不能實例化抽象類型,因爲我理解std:move操作符需要以某種方式實例化對象嗎?
任何人都可以幫助我如何管理這個問題嗎?還是應該函數(不是我的項目的一部分)不返回一個唯一指向抽象類型的對象的指針?
我們在談論一個'vector'嗎?這是行不通的。代之以存儲'vector >'。 –
你是對的!我是盲人,我將它改爲'vector>',現在它可以工作 –
soriak
@ R.MartinhoFernandes:對你的評論+1(這應該是一個答案)。你必須讀懂頭腦! –