Dev - C++ - Acceso al método de una clase derivada conIterator

 
Vista:

Acceso al método de una clase derivada conIterator

Publicado por David (1 intervención) el 16/11/2010 19:29:14
Buenas, a ver si pueden solucionarme el problema que tengo.

Tengo dos classes, una clase A y una subclasse de A llamada B:

Class A {
.....
virtual void draw()

}

Class B: public A {
....
void draw()

}

Dispongo de una lista cómo la siguiente:
std::list<A> lista;

A la cual añado tanto elementos de la classe A cómo elementos de la classe B. El problema me surge cuando quiero recorrer todos los elementos de la lista y hacer una llamada al método draw:

std::list<A>::iterator it;
it = lista.begin();
while(it != lista.end()) {
it->draw();
it++;
}

Siempre me llama al método implementado en la classe A, independientemente de la clase añadida sea del tipo A o B. ALguna solución?
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

RE:Acceso al método de una clase derivada conItera

Publicado por Alex (1 intervención) el 16/11/2010 21:08:19
Debes usar punteros en vez de instancias de classes.

std::list<*A> lista;

y

std::list<*A>::iterator it;
it = lista.begin();
while(it != lista.end()) {
(*it)->draw();
it++;
}

Un saludo ;).
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