と呼ばれるクラスがありgroup、その内部にいくつかの基本クラスを保持し、std::unique_ptrs (ポリモーフィズム) に保持します。順序は重要ではなく、一部の要素がそれらの間で等しいかどうかも重要ではありません。メンバー宣言のようにstd::vectorフラグを立てるのが理想的です。const
group設計の一環として、次のように、オブジェクトに収まるすべての要素を に渡したいと思いinitializer_listます。
class base;
class derived1 : base;
class derived2 : base;
class derived3 : base;
group my_object({ new derived1() , new derived2() , new derived3() });
しかし、私は次のことに問題があります。
groupクラス内のベクトルはstd::unique_ptr、オブジェクトではなくで構成されます。- s は1 つの type
std::initializer_listのオブジェクトのみを保持できるため、その型は基本クラスへのポインターでなければなりません。
これらすべてを考慮して、どのように実装すればよいでしょうか? クラスのベクトルに保持されている要素はgroup変更されることが想定されていないため、コンストラクターの初期化リストで初期化する方がはるかに効率的です。ただし、 s はコピー可能ではなく、生のポインターで構成されたsからaをstd::unique_ptr作成する方法がわかりません。vectorunique_ptr<base_class>initializer_list