Problema con plantillas (SOLUCIONADO)

Iniciado por SARGE553413, 11 Noviembre 2012, 14:26 PM

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

SARGE553413

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.

SARGE553413

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.