と呼ばれるクラスがありgroup
、その内部にいくつかの基本クラスを保持し、std::unique_ptr
s (ポリモーフィズム) に保持します。順序は重要ではなく、一部の要素がそれらの間で等しいかどうかも重要ではありません。メンバー宣言のように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
作成する方法がわかりません。vector
unique_ptr<base_class>
initializer_list