четверг, 30 января 2014 г.

typedef в классах

typedef можно использовать внутри классов. Это удобно, например, когда нужен какой-нибудь специфический map внутри этого класса и потом итераторы к нему где-то во вне.
Используется это(опять же, например, так):

class MyClass {
public:
  typedef map<int, std::string> mymap_type;
private:
  mymap_type mymap;
public:
  ...
  mymap::iterator get_map_beg() {
    return mymap.begin();
  }
}

...

int main() {
  MyClass myclass_var;
  MyClass::mymap_type::iterator it = myclass_var.get_beg();
}

Очевидно, сам класс итератора можно было тоже сделать typedef в классе =)

Плюсов довольно много. Значимые для меня:
 + Уходят длинные некрасивые строки с шаблонами, читать становится проще
 + Проще потом поменять тип, если что-то изменилось. Не надо лазить по всему коду и править типы.

Минусы:
 - могут возникнуть проблемы с зависимостями

Комментариев нет:

Отправить комментарий