我有一个名为“group”的类,它将在其中保持一些基类,这些基类以
作为设计的一部分,我想通过
但我在以下方面遇到了问题:
std::unique_ptr
的形式存储(即多态)。顺序并不重要,也不要紧是否其中某些元素相等。这是用std::vector
完成的任务,我希望在成员声明中将其标识为const
。作为设计的一部分,我想通过
initializer_list
传递所有适合放入group
对象的元素,如下所示: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
只能包含一种类型的对象,因此该类型应为指向基类的指针。
考虑到所有这些,我应该如何实现它? 由于 group
类的向量中保存的元素不应更改,因此在构造函数的初始化列表中初始化它要更有效率。 但是,std::unique_ptr
不可复制,我无法想出如何从由原始指针组成的 initializer_list
构建一个 vector
,其中包含 unique_ptr<base_class>
。