W pliku C++ nagłówka, widzę ten kod:C++ - sens oświadczenia łączące typedef i TypeName
typedef typename _Mybase::value_type value_type;
Teraz, jak rozumiem, cytując z «C++ Complete Reference» przez Schildt . typename
można zastąpić przez klasę słów kluczowych, drugim użyciem typename
jest informowanie kompilatora, że nazwa używana w deklaracji szablonu jest nazwą typu, a nie nazwą obiektu.
Podobnie można zdefiniować nowe nazwy typów danych za pomocą słowa kluczowego typedef
. W rzeczywistości nie tworzysz nowego typu danych, ale definiujesz nową nazwę dla istniejącego typu .
Czy można jednak wyjaśnić, co dokładnie oznacza powyższy wiersz kodu, gdzie typedef
i typename
są łączone razem. A co oznacza "::
" w oświadczeniu?
'typename' ma takie samo zastosowanie wewnątrz i na zewnątrz' typedef'. Bardziej realistycznym (rodzaj) przykładem może być 'typedef typename std :: vector :: iterator Iter;' –
chris
@chris, co dokładnie ma wartość _Mybase :: value_type i value_type oddzielnie i "_Mybase :: value_type value_type"? – Arvind
I omg, Schildt powrócił. Nagraj teraz tę książkę. – chris