2017-09-20 13 views
1

私はスマートポインタのハングを取得しようとしています。私はunique_ptrのベクトルを持っていますが、それを作成することはできますが、アクセスすることはできません。今unique_ptrのベクトルにはどのようにアクセスしますか

vector<unique_ptr<double[]>> arrDoubles; 

//... 

unique_ptr<double[]>dataArr(new double[size]); 
arrDoubles.push_back(move(dataArr)); 

auto datAr = arrDoubles[0]; 

は、次のようになります:

error: use of deleted function ‘std::unique_ptr<_Tp [], _Dp>::unique_ptr(const std::unique_ptr<_Tp [], _Dp>&) [with _Tp = double; _Dp = std::default_delete<double []>]’ 
+2

'オートDATAR = arrDoubles [0]ので;'試みがするコピー構築 'unique_ptr'、そして、あなたが知っているように、'のstd :: unique_ptr'は、コピーコンストラクタを持っていません。 –

+0

はい、あなたは正しいです。 –

答えて

6

あなたが行うことはできませんunique_ptrのコピーを作成しようとしています。参照を使用します。

auto& datAr = arrDoubles[0]; 
+0

ありがとう、これは働いた!なぜそれがうまくいかなかったのか理解しています。 –

+0

@GhanshyamBhutra - あなたの問題が解決されたら、この回答に合格とマークしてください。 – StoryTeller

+0

完了。ありがとう@StoryTeller –

関連する問題