shared_ptr с вызовом фабричного метода
От: gencoder  
Дата: 13.01.17 12:51
Оценка:
Правильно ли я понимаю, что утечек памяти в блоке A нет?
  // ...
  { // начало блока A
    vector<std::shared_ptr<Base>> v;
    v.push_back(std::shared_ptr<Base>(Base::create(23)));
    v.push_back(std::shared_ptr<Base>(Base::create(25)));
    v.push_back(std::shared_ptr<Base>(Base::create(33)));
    for( auto e: v ) e->foo();
  } // конец блока A
  //...
  enum ID { SomeID1=23 /* ... */ };
  Base* Base::create( ID id )
  {
      Base * p;
      switch( id )
      {
          case SomeId1: p = new /* ... */ break;
          // ...
      }
      return p;
  }
Отредактировано 13.01.2017 12:52 gencoder . Предыдущая версия .
shared_ptr
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.