の 2 つの一致するベクトルがありunique_ptr
ました。2 つを含む構造体の 1 つのベクトルを作成することで、それらを統合することにしましたunique_ptr
(構造体には最終的に他の項目も含まれるため、このリファクタリングが行われます)。
このベクターに新しいアイテムを追加するための最良の方法は何ですか?
私の現在のコードは
std::vector<DestinationObjects> destinations;
for (unsigned short &id: ids) {
DestinationObjects d;
d.transmitter = unique_ptr<Transmitter> (new Transmitter(id));
d.controller = unique_ptr<Controller> (new Controller(id));
destinations.push_back(d);
}
もちろん、これは をコピーd
し、 で問題を引き起こしますunique_ptr
。これを修正するための最良の方法は何ですか?
私が考えることができるオプションは、うまくいくかどうかわからないものもあります:
- に切り替えるだけ
shared_ptr
です。(単純な検索置換ですが、警官のように感じます)。 - unique_ptr を移動する構造体の移動コンストラクターを記述します。(構造体を展開すると、うまくいかない可能性があります)。
- unique_ptr のヌル ポインターを使用して空の構造体インスタンスをプッシュ バックし、これらをベクター内で一度編集します。(厄介な構文。また、これが機能するかどうかもわかりません)。
別のアプローチは何ですか?または、リストしたもののいずれかを優先する必要があるのはなぜですか?