给定的是std::array
,其中包含IMyClass
的子类实例:
std::array<std::shared_ptr<IMyClass>, 20> myArr;
在索引位置0,5和10
std::make_shared<RareSubClass>()
应该在所有其他指数上分配
std::make_shared<FrequentSubClass>()
实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
使用小辅助函数在运行时初始化该数组很容易:
void init_array(std::array<std::shared_ptr<IMyClass>, 20>& arr) {
int slot = 0;
for(auto& subclass : arr) {
switch(slot) {
case 0:
case 5:
case 10:
subClass = std::make_shared<RareSubClass>();
break;
default:
subClass = std::make_shared<FrequentSubClass>();
break;
}
++slot;
}
}