In un file C++ di intestazione, sto vedendo questo codice:C++ - significato di una dichiarazione che unisce typedef e typename
typedef typename _Mybase::value_type value_type;
Ora, mi pare di capire, citando «C++ il riferimento completo» di Schildt . typename
può essere sostituito con la classe parola chiave, il secondo utilizzo di typename
è informare il compilatore che un nome utilizzato in una dichiarazione modello è un nome di tipo piuttosto che un nome oggetto.
Analogamente, è possibile definire nuovi nomi di tipi di dati utilizzando la parola chiave typedef
. Non sei effettivamente creando un nuovo tipo di dati, ma piuttosto definendo un nuovo nome per un tipo esistente .
Tuttavia, è possibile spiegare esattamente qual è il significato della riga di codice sopra, dove typedef
e typename
vengono combinati insieme. E cosa implica il "::
" nella dichiarazione?
'typename' ha lo stesso uso all'interno e all'esterno di un' typedef'. Un esempio più realistico potrebbe essere 'typedef typename std :: vector :: iterator Iter;' –
chris
@chris cosa esattamente _Mybase :: value_type e value_type separatamente e "_Mybase :: value_type value_type" rappresentano? – Arvind
E omg, Schildt è tornato. Brucia quel libro adesso. – chris