Dev - C++ - Tipos de retornos en metodos de una clase

   
Vista:

Tipos de retornos en metodos de una clase

Publicado por Ignacio (3 intervenciones) el 17/12/2014 05:04:17
Hola, me da un error de este tipo cuando ejecuto este codigo.

http://pastebin.com/1Sj79gX2


error: expected constructor, destructor, or type conversion before '*' token

el error se encuentra aca:

template <class Elemento>
nodoLista * lista<Elemento>::devuelve_nodo(int posicion) <------

yo creo que el tipo de retorno de este metodo esta mal, si alguien puede corregirlo seria de mucha ayuda. gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Tipos de retornos en metodos de una clase

Publicado por Martín (65 intervenciones) el 17/12/2014 20:55:26
Hola;

El error se debe a que falta definir qué tipo es nodoLista para que devuelve_nodo() pueda devolver uno.

El tipo devuelto por devuelve_nodo es:
Lista<Elemento>::nodoLista* Lista<Elemento>, y así hay que indicarlo:
Lista<Elemento>::nodoLista* Lista<Elemento>::devuelve_nodo(int posicion)

Pero hasta acá el compilador no puede saber si Lista<Elemento>::nodoLista* Lista<Elemento> es una variable miembro o un tipo anidado, así que hay que decírselo con "typename",

Entonces, la definición de la función quedaría:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template <class Elemento>
typename Lista<Elemento>::nodoLista* Lista<Elemento>::devuelve_nodo(int posicion)
{
    nodoLista * it = lista;
    int cont = 1;
 
    while (it != 0)
    {
        if (cont == posicion)
            return it;
        }
        it = it->sig;
        cont++;
    }
    return nullptr;
}


Profesor particular de C++
Explicaciones teóricas y ejemplos por mail.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Tipos de retornos en metodos de una clase

Publicado por Ignacio (3 intervenciones) el 17/12/2014 22:02:46
Muchas gracias, me funciono!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar