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 в классе =)
Плюсов довольно много. Значимые для меня:
+ Уходят длинные некрасивые строки с шаблонами, читать становится проще
+ Проще потом поменять тип, если что-то изменилось. Не надо лазить по всему коду и править типы.
Минусы:
- могут возникнуть проблемы с зависимостями
Используется это(опять же, например, так):
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 в классе =)
Плюсов довольно много. Значимые для меня:
+ Уходят длинные некрасивые строки с шаблонами, читать становится проще
+ Проще потом поменять тип, если что-то изменилось. Не надо лазить по всему коду и править типы.
Минусы:
- могут возникнуть проблемы с зависимостями