Tengo un problema con el siguiente código:typedef dentro clase de plantilla no funciona
template <typename U>
class lamePtr
{
public:
typedef U* ptr;
};
template <typename U>
class smarterPointer
{
public:
void funFun()
{
typedef lamePtr<U> someType;
someType::ptr query;
}
};
Como se puede ver, tengo un typedef dentro lamePtr. Dentro de la clase smarterPointer tengo una función funFun(). Lo que estoy tratando de hacer es hacer otro typedef someType. Hasta esa línea, todo funciona bien hasta que lleguemos a la línea con la consulta someType :: ptr.
Lo que quiero que ocurra aquí es que "query" se convertirá en lamePtr < U> :: ptr (un valor simple, no un typedef;). Sin embargo, tengo errores de compilación (con gcc 4.4.3):
temp.cpp: In member function ‘void smarterPointer<U>::funFun()’:
temp.cpp:15: error: expected ‘;’ before ‘query’
¿Qué estoy haciendo mal aquí?
relacionada, con una gran cantidad de información acerca de por qué se necesita el 'typename': [? ¿De dónde y por qué tengo que poner' 'template' y typename' sobre los nombres de dependientes] (http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-template-and-typename-on-dependent-names) –
En el futuro, no intente formatear su código con etiquetas html. Simplemente ingrésalo tal como está, selecciónalo y haz clic en el botón '{}'. –
Gracias, lo tendré en cuenta para el futuro. Gracias por la referencia James, voy a pasar un tiempo en eso – Melon