我有一个名为 的类,group
它将在其中保留许多基类,保存在std::unique_ptr
s (多态性)中。顺序无关紧要,它们之间的某些元素是否相等也无关紧要。这是 a 的任务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
,而不是对象。 - 由于
std::initializer_list
s 只能保存一种类型的对象,因此该类型应为指向基类的指针。
考虑到所有这些,我应该如何实施它?由于group
类向量中的元素不应该更改,因此在构造函数的初始化列表中对其进行初始化会更有效。但是,std::unique_ptr
s 是不可复制的,我不知道如何从由原始指针组成的a vector
of构造。unique_ptr<base_class>
initializer_list