enum c++ typedef typename

c++ - typedef enum



C++-significado de una instrucción que combina typedef y typename (2)

Esta pregunta ya tiene una respuesta aquí:

En un archivo de encabezado C ++, estoy viendo este código:

typedef typename _Mybase::value_type value_type;

Ahora, según tengo entendido, cito de « C ++ la referencia completa » de Schildt. typename se puede sustituir por clase de palabra clave, el segundo uso de typename es informar al compilador que un nombre utilizado en una declaración de plantilla es un nombre de tipo en lugar de un nombre de objeto.

Del mismo modo, puede definir nuevos nombres de tipo de datos utilizando la palabra clave typedef . En realidad, no está creando un nuevo tipo de datos, sino más bien definiendo un nuevo nombre para un tipo existente.

Sin embargo, ¿puede explicar exactamente cuál es el significado de la línea de código anterior, donde typedef y typename se combinan juntos? ¿Y qué implica el " :: " en la declaración?


typedef está definiendo un nuevo tipo para usar en tu código, como una abreviatura.

typedef typename _MyBase::value_type value_type; value_type v; //use v

typename aquí está dejando que el compilador sepa que value_type es un tipo y no un objeto dentro de _MyBase .

el :: es el alcance del tipo. Es algo así como "está en", por lo que value_type "está en" _MyBase . o también se puede pensar que contiene.


typename está diciendo que _Mybase::value_type es el nombre del tipo para que typedef pueda reley sobre ese hecho.