Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: alexrn en 20 Mayo 2014, 14:21 pm



Título: Problema al compilar en Ubuntu con templates
Publicado por: alexrn en 20 Mayo 2014, 14:21 pm
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.


Título: Re: Problema al compilar en Ubuntu con templates
Publicado por: eferion en 20 Mayo 2014, 14:25 pm
y cómo es la declaración del template?


Título: Re: Problema al compilar en Ubuntu con templates
Publicado por: alexrn en 20 Mayo 2014, 14:32 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
};
};


Título: Re: Problema al compilar en Ubuntu con templates
Publicado por: eferion en 20 Mayo 2014, 15:09 pm
prueba con

Código
  1. template <typename T>
  2. void imprimirDescendientes(Agen<T>&A, typename Agen<T>::nodo)



Título: Re: Problema al compilar en Ubuntu con templates
Publicado por: alexrn en 20 Mayo 2014, 15:19 pm
Ya compila, muchas gracias, no sabía que había que indicar el typename de nuevo.

Un saludo.


Título: Re: Problema al compilar en Ubuntu con templates
Publicado por: eferion en 20 Mayo 2014, 15:41 pm
Tienes que ponerlo porque nodo es dependiente del template "Agen"

Un saludo.