O typedef funciona apenas para struct ?
O typedef funciona apenas para struct ?
Olá, Rita. Negativo!
O typedef funciona para qualquer tipo que você queira redefinir. Inclusive, você pode usar o typedef para redefinir redefinições que você fez. É uma prática que parece ser comum quando se usa muitas abstrações principalmente com templates. Um exemplo prático que você pode ver, é a biblioteca STL feita pela HP que além de utilizarem o typedef para redefinir tipos que estão dentro do template:
typedef _Key key_type;
typedef _Tp mapped_type;
typedef std::pair<const _Key, _Tp> value_type;
typedef _Compare key_compare;
typedef _Alloc allocator_type;
eles também utilizam para diminuir o nome de algumas variáveis que estão sendo utilizadas a partir de outros namespaces:
typedef typename _Alloc_traits::pointer pointer;
typedef typename _Alloc_traits::const_pointer const_pointer;
typedef typename _Alloc_traits::reference reference;
typedef typename _Alloc_traits::const_reference const_reference;
typedef typename _Rep_type::iterator iterator;
typedef typename _Rep_type::const_iterator const_iterator;
typedef typename _Rep_type::size_type size_type;
typedef typename _Rep_type::difference_type difference_type;
typedef typename _Rep_type::reverse_iterator reverse_iterator;
typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
Não precisa se preocupar em entender o código acima ou o link da biblioteca. Apenas para ilustrar que você pode usar o typedef da maneira que lhe for mais conveniente. Experimente diversas coisas e conheça os limites de uso através de tentativas e erros mesmo : )
Espero ter ajudado.