Tema: Problema.
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/09/2011, 17:10
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Problema.

Aunque ya has encontrado la solución, que efectivamente era esa, tienes que entender la razón por la cual funciona.

En lo que tenías antes:

Código C++:
Ver original
  1. cube::cube (){
  2.            int x;
  3.            for (x = 0;x < 6;x++){
  4.                face test_face(x);
  5.                cube::faces[x] = &test_face;
  6.                }
  7.            }

Al crear la variable test_face de manera no dinámica y luego asignarle la dirección de memoria de esa variable en la siguiente línea a cube::faces[x], lo que estás haciendo es que en todas las vueltas del bucle le estás asignando la misma dirección de memoria y,al final, todas las caras del cubo van a apuntar a la misma cara. Si lo vieses con el depurador, te darías cuenta que el valor del array colores es 5 (el del último valor del bucle).

Al utilizar memoria dinámica esto se soluciona porque ahora sí estás asignando diferentes objetos a cada posición del array faces.

A lo mejor ya te has dado cuenta, pero así viene bien si alguien entra y lo ve y no sabe porque es.

Saludos