Sì, se il typedef è protected o pubblico.Originariamente inviato da Neptune
Ma se io ho un classe che nella patre pubblica ha qualcosa del tipo:
e poi ho una seconda classe che eredita dalla prima, erediterà anche quella typedef?codice:typedef T numero;
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++.E' invece possibile fare una typedef "templetizzata" ma globale? ovvero applicare un template alla typedef? o la cosa risulta insensata?![]()
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.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:
Senza la dicitura "typename" mi da gli stessi errori di primacodice:typename Lista<T,P>::tipoelem Lista<T,P>::leggi(posizione p)
Perchè ha bisogno della dicitura typename?codice:expected constructor, destructor, or type conversion before "classe_spazio" expected `;' before "classe_spazio"