Re: Как скопировать объекты из класса?
От: Кодт Россия  
Дата: 19.07.10 10:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Что делать если внутренний контейнер не std::vector<std::string>, а std::map<int, Z>, где Z — структура, из которой мы хотим выдавать лишь одно поле, а не всю структуру? Для этого подходит второй способ, но функцию приходится определять сразу, то есть в hpp-файле. Есть какое нибудь стандартное решение?


Поскольку объявление члена — container c — всё равно лежит в хедере, то не вижу препятствий, чтобы там же лежало и определение функции.
Оно несложное
  template<class OutIt>
  void copy(OutIt out)
  {
    std::transform(c.begin(), c.end(), out, theFieldOfZ);
  }
  // не хочу городить bind в ущерб читаемости
  static int justFieldOfZ(std::map<int,Z>::value_type const& elem)
  {
    return elem->second.theField;
  }
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.