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.
y cómo es la declaración del template?
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
};
};
prueba con
template <typename T>
void imprimirDescendientes(Agen<T>&A, typename Agen<T>::nodo)
Ya compila, muchas gracias, no sabía que había que indicar el typename de nuevo.
Un saludo.
Tienes que ponerlo porque nodo es dependiente del template "Agen"
Un saludo.