Originariamente inviato da Neptune
Ma se io ho un classe che nella patre pubblica ha qualcosa del tipo:

codice:
typedef T numero;
e poi ho una seconda classe che eredita dalla prima, erediterà anche quella typedef?
Sì, se il typedef è protected o pubblico.
E' invece possibile fare una typedef "templetizzata" ma globale? ovvero applicare un template alla typedef? o la cosa risulta insensata?
Parli di una typedef che lasci template uno o più parametri? È una cosa che risulta comoda ma che non è supportata dal corrente standard; verrà aggiunto invece nel prossimo standard C++.
Un'altra cosa ho notato che se ho una typedef "templetizzata" in una classe, e poi ho un metodo che ritorna quel tipo, devo applicare la dicitura typename o mi da errore, come mai?

Ovvero:

codice:
typename Lista<T,P>::tipoelem  Lista<T,P>::leggi(posizione p)
Senza la dicitura "typename" mi da gli stessi errori di prima
codice:
expected constructor, destructor, or type conversion before "classe_spazio" 
expected `;' before "classe_spazio"
Perchè ha bisogno della dicitura typename?
typename serve per risolvere delle ambiguità grammaticali come quella in questione, per cui il compilatore non riesce a determinare se il nome in questione si riferisce ad un tipo o ad altro. La keyword typename risolve l'ambiguità indicando esplicitamente al compilatore che l'identificatore che segue si riferisce ad un tipo.