Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SARGE553413 en 11 Noviembre 2012, 14:26 pm



Título: Problema con plantillas (SOLUCIONADO)
Publicado por: SARGE553413 en 11 Noviembre 2012, 14:26 pm
Hola a todos.

Parece que esta duda esta archicontestada, pero he buscado en google 1000 ejemplos y no ha funcionado ni uno, así que os pregunto a vosotros.

Tengo una clase template con este método:

template <class T>
class Lista
{
     private: int nElementos;
     private: T ** ptr;  //vector "dinámico" de punteros a objetos clase T
     ......
     Lista(int n); //Constructor de lista de n elementos
     ......
     void setElemento(T *,int n);  //Poner un elemento en la posicion 'n'
     ......
     ......
}

//y en el he probado todo esto:

int main()
{
       Lista <int> *L1=new Lista<int>(3);
       Lista <int> L2(3);
       int a=2;
       L1->template setElemento<int>(&a,1);
       L1->setElemento<int>(&a,1);    
       L2.template setElemento<int>(&a,1);
       L2.setElemento<int>(&a,1);  
}

No compila nada de lo que he probado, he mirado por internet y a todo el mundo que esto le daba problemas se le solucionaba al hacerlo como yo arriba, y no encuentro mas ejemplos o formas de hacerlo. Leí en un foro en inglés que el problema podría ser que tengo que declarar, en setElemento, el puntero a T como const, lo he probado y tampoco funciona. ¿Que puedo hacer?

EDITO: los errores que da son:
si no pongo el template: expected primary expression before int.
                                   expected ';' before int.
y si pongo template:
lo mismo y ademá:  `template' (as a disambiguator) is only allowed within templates

Muchas gracias de antemano.


Título: Re: Problema con plantillas (SOLUCIONADO)
Publicado por: SARGE553413 en 11 Noviembre 2012, 19:14 pm
Hola de nuevo, no se muy bien como lo he hecho pero ya lo he solucionado, no hace falta que conteste nadie por tanto. Si alguien tiene el mismo problema y quiere que copie todo el código fuente para ver el ejemplo, contestad a este mensaje y lo haré :)

Saludos.