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.