Problema al compilar en Ubuntu con templates

Iniciado por alexrn, 20 Mayo 2014, 14:21 PM

0 Miembros y 1 Visitante están viendo este tema.

alexrn

Hola,

Soy nuevo en el foro, me acabo de registrar aunque ya llevo un tiempo leyendo, el caso es que tengo un problema al compilar en Ubuntu que en Windows no me da, y como prefiero usar Ubuntu quería ver si sabéis a qué se debe.

Estoy trabajando con árboles, pero al compilar por ejemplo la función

"template <typename T>
void imprimirDescendientes(Agen<T>& A,Agen<T>::nodo);"

me dice "'Agen<T>::nodo' is not a type", cuando sí que lo tengo declarado dentro de la clase Agen, que representa un árbol general.

Ya os digo que en Windows me compila perfectamente y ejecuto y sin problemas, de ahí que me mosquee el error, ¿el compilador de Linux trata distinto a los templates o se debe a otra cosa?

Gracias y un saludo.

eferion

y cómo es la declaración del template?

alexrn

Cita de: eferion en 20 Mayo 2014, 14:25 PM
y cómo es la declaración del template?

La clase viene a ser esta:

template <typename T>
class Agen {
struct celda;
public:
typedef celda* nodo;
static const nodo NODO_NULO;
/* Métodos y operaciones varias */
private:
struct celda {
//declaración de la clase celda
};
};

eferion

prueba con

Código (cpp) [Seleccionar]
template <typename T>
void imprimirDescendientes(Agen<T>&A, typename Agen<T>::nodo)



alexrn

Ya compila, muchas gracias, no sabía que había que indicar el typename de nuevo.

Un saludo.

eferion

Tienes que ponerlo porque nodo es dependiente del template "Agen"

Un saludo.