在某些位置填充元素

时间:2016-11-08 18:44:09

标签: c++ arrays pointers inheritance polymorphism

给定的是std::array,其中包含IMyClass的子类实例:

std::array<std::shared_ptr<IMyClass>, 20> myArr;

在索引位置0,5和10

std::make_shared<RareSubClass>()

应该在所有其他指数上分配

std::make_shared<FrequentSubClass>()

实现这一目标的最佳方法是什么?

1 个答案:

答案 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;
      }
 }