Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/10/2012, 01:10
Avatar de Instru
Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Respuesta: Crash con objecto devuelto de un map

Ohhh. Esta es una de las razones por las cuales no me gusta la STL. El codigo se vuelve casi ilegible y propenso a "efectos secundarios".

No te puedo decir con certeza que ocurre, pero si tengo una teoría.

Tienes un objeto llamado objeto de tipo objeto.
Y derivas una clase hija llamada testclass.

No se si testclass tenga más métodos.

Ahora, declaras un mapa de pares strings y objetos. Hasta ahí todo bien.
Después viene lo interesante.
Insertas en alguna variable(vector, lista o algo) un nuevo par que contiene de texto gola y la clase tst.
Pero como defines que el insert sólo acepta objeto, entonces la información "extra" de testclass se pierde ya que no usas una referencia o un puntero.
Sin embargo la información que si es parte de objeto se conserva, y el programa sigue.

Con el iterador encuentras el objeto que antes era testclass.
Luego con un apuntador tipo testclass apuntas a este objeto que en realidad ya es del tipo objeto.
Entonces al querer ejecturar un método que en realidad no existía sobre información que tal vez no existía pues crash!!!.

Curiosamente esto no sucede en todos los lenguajes orientados a objetos, cada uno tiene una manera de tratar este singular problema.

Te recomendaría que revisaras esto con un depurador para confirmarlo o refutarlo.

Espero mi explicación se haya entendido.

Saludos