私は、抽象クラスのオブジェクトにstd :: unique_ptrを返す関数を使用するループを得ました。私はこれらのオブジェクトをpush_backを介してstd :: vectorに格納したい。オブジェクトは抽象型であるため、しかし、私は次のエラーを取得する:std :: unique_ptrで与えられた抽象クラスのオブジェクトのベクトルを格納する方法は?
細胞は抽象型のstd::vector
あると
cell
のタイプが
std::unique_ptr<AbstractType>&& cell
ある
error: cannot allocate an object of abstract type
ラインの
cells.push_back(std::move(*cell));
(私は実際にcell
をハンドラクラスに渡します) 抽象型をインスタンス化することはできません。 std:move演算子を理解すると、何らかの形でオブジェクトをインスタンス化する必要がありますか?
問題の管理方法を教えてもらえますか?または、関数(プロジェクトの私の一部ではない)が抽象型のオブジェクトへのユニークなポインタを返さないのでしょうか?
「ベクトル」について話していますか?それは動作しません。代わりに 'vector >'を格納してください。 –
あなたは正しいです!私は目が見えませんでした。私は 'vector>'に変更しました。 –
soriak
@ R.MartinhoFernandes:あなたのコメントに+1してください。あなたは心を読む必要があります! –