Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda Con arrays, y Memory allocations.

Estas en el tema de Duda Con arrays, y Memory allocations. en el foro de C/C++ en Foros del Web. Bueno el caso es este: Yo Quiero tener una "point "y una clase "polygon", que tiene un método que recibe un array de "point"´s y ...
  #1 (permalink)  
Antiguo 18/09/2011, 13:38
Avatar de sbcl  
Fecha de Ingreso: julio-2011
Mensajes: 29
Antigüedad: 13 años, 5 meses
Puntos: 5
Duda Con arrays, y Memory allocations.

Bueno el caso es este:
Yo Quiero tener una "point "y una clase "polygon", que tiene un método que recibe un array de "point"´s y polygon iguala su propio array de "point"´s a ese, alojando la memoria necesaria dependiendo la longitud del array recibido.

Esto es el Código:
Clases.c:
Código c:
Ver original
  1. class point
  2. {
  3.       public:
  4.       int x;
  5.       int y;    
  6.       point (int x_,int y_){
  7.            x = x_;y = y_;
  8.            }
  9. };
  10.  
  11. class polygon
  12. {
  13.      public:
  14.      point ** points;
  15.      void set_points(int point_count, point ** new_points){
  16.           points = (point**) calloc(point_count,sizeof(point*));
  17.           int x;
  18.           for (x = 0; x < point_count;x++){
  19.               points[x] = new_points[x];
  20.               }
  21.           };
  22. };

Desde acá lo ejecuto:
Código c:
Ver original
  1. int main()
  2. {
  3.     point * puntos[3];
  4.     puntos[0] = new point(5,10);
  5.     puntos[1] = new point(8,10);
  6.     puntos[2] = new point(10,10);
  7.     polygon * poligono;
  8.     poligono->set_points(3,puntos);
  9.     wait(10);
  10.     return 0;  
  11. }

No tira ningun error, simplemente crashea el sistema.
Si alguien puede darme una mano, se lo agradeceria!
Saludos.
  #2 (permalink)  
Antiguo 18/09/2011, 13:50
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 7 meses
Puntos: 74
Respuesta: Duda Con arrays, y Memory allocations.

Código:
polygon * poligono;
poligono->set_points(3,puntos);
poligono es un puntero indefinido.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 18/09/2011, 13:51
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: Duda Con arrays, y Memory allocations.

Lo primero, mezclas calloc con new. Si estás en C++, lo mejor es usar new.

Código C++:
Ver original
  1. class point
  2. {
  3.       public:
  4.       int x;
  5.       int y;    
  6.       point (int x_,int y_){
  7.            x = x_;y = y_;
  8.            }
  9. };
  10.  
  11. class polygon
  12. {
  13.      public:
  14.      point ** points;
  15.      void set_points(int point_count, point ** new_points){
  16.           points = new point *[point_count];
  17.           int x;
  18.           for (x = 0; x < point_count;x++){
  19.               points[x] = new_points[x];
  20.               }
  21.           };
  22. };

Código C++:
Ver original
  1. int main()
  2. {
  3.     point * puntos[3];
  4.     puntos[0] = new point(5,10);
  5.     puntos[1] = new point(8,10);
  6.     puntos[2] = new point(10,10);
  7.     polygon * poligono = new polygon(); //Te falta crear el poligono con new
  8.     poligono->set_points(3,puntos);
  9.     wait(10);
  10.     return 0;  
  11. }

Como se me ha adelantado Eternal Idol, el problema es ese puntero no definido.
  #4 (permalink)  
Antiguo 18/09/2011, 14:33
Avatar de sbcl  
Fecha de Ingreso: julio-2011
Mensajes: 29
Antigüedad: 13 años, 5 meses
Puntos: 5
Respuesta: Duda Con arrays, y Memory allocations.

Soy un idiota, no se como no me di cuenta! D:
Muchas gracias por la ayuda a ambos! Voy a tener todo esto en cuenta.
  #5 (permalink)  
Antiguo 18/09/2011, 14:38
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 7 meses
Puntos: 74
Respuesta: Duda Con arrays, y Memory allocations.

De nadas
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Etiquetas: arrays, memory
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:12.