【发布时间】:2017-03-22 12:17:42
【问题描述】:
Given 是一个 std::array,其中包含 IMyClass 的子类的实例:
std::array<std::shared_ptr<IMyClass>, 20> myArr;
在索引位置 0、5 和 10
std::make_shared<RareSubClass>()
应该在所有其他索引上分配
std::make_shared<FrequentSubClass>()
实现这一目标的最佳方法是什么?
【问题讨论】:
-
如何为那些需要成为
RareSubClass的元素提供索引?是硬编码的吗? -
运行时初始化可以吗?
-
@AndyG 是的,RareSubClass 实例总是在提到的位置。
-
@user1056903:那么可能最好进行统一初始化。
std::array<...> myArr = {make_shared<FrequentSubClass>(), make_shared<RareSubClass>(), ...};
标签: c++ arrays pointers inheritance polymorphism