В заголовочном файле C ++ я вижу этот код:
typedef typename _Mybase::value_type value_type;
Теперь, как я понимаю, цитирую «Полный справочник по C ++» Шильдта. typename
можно заменить ключевым словом class, второе использование typename
- сообщить компилятору, что имя, используемое в объявлении шаблона, является именем типа, а не именем объекта.
Точно так же вы можете определить имена новых типов данных с помощью ключевого слова typedef
. Фактически вы не создаете новый тип данных, а скорее определяете новое имя для существующего типа.
Однако можете ли вы объяснить, что именно означает приведенная выше строка кода, где typedef
и typename
объединены. А что означает "::
" в заявлении?
typename
одинаково используется внутри и снаружиtypedef
. Более реалистичным (своего рода) примером может бытьtypedef typename std::vector<T>::iterator Iter;
- person chris   schedule 22.08.2013_Mybase
.typedef
иtypename
- это два разных вопроса, на один из которых дан довольно хороший ответ в той ссылке. - person chris   schedule 22.08.2013