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

[SOLUCIONADO] Vector dinamico de clases

Estas en el tema de Vector dinamico de clases en el foro de C/C++ en Foros del Web. Hola buenas, staba haciendo una practica para aprender un poco mas sobre c++. Basicamente lo que estoy intentando hacer es crear una clase que contenga ...
  #1 (permalink)  
Antiguo 22/11/2013, 11:36
 
Fecha de Ingreso: noviembre-2013
Mensajes: 2
Antigüedad: 11 años
Puntos: 0
Pregunta Vector dinamico de clases

Hola buenas, staba haciendo una practica para aprender un poco mas sobre c++.
Basicamente lo que estoy intentando hacer es crear una clase que contenga otra clase, pero que ambas se han dinamicas; es decir yo creo la clase A, y dentro de A la clase B, el tema es que quiero n objetos A, pero a su vez cada objeto A tiene dentro m objetos B, dejo el codigo haber si se entiende mejor:


Código C++:
Ver original
  1. class A
  2. {
  3.    class B
  4.        {
  5.              char *cosa;
  6.        public:
  7.              B();
  8.              ~B();
  9.              const char *Getcosa(){return cosa;}
  10.              const void *Setcosa(char *lo){lo=cosa;}
  11.        };
  12. public:
  13.       A();
  14.       ~A();
  15.       B *otracosa;
  16. };
  17. A::B::B()
  18. {
  19.       cosa = new char;
  20.       strcpy(cosa,"ola");
  21. }
  22. A::A::~B()
  23. {
  24.      delete[]cosa;
  25.      cosa=NULL;
  26. }
  27. A::A()
  28. {
  29.       otracosa = new otracosa;
  30. }
  31. A::~A()
  32. {
  33.       delete[]otracosa;
  34.       otracosa=NULL;
  35. }
  36.  
  37. int main()
  38. {  
  39.      A *punt = new A;
  40.      .
  41.      .
  42.      .
  43.      .
  44.      delete[]punt;
  45.      punt=NULL;
  46. }

no se si esque no es la manera correcta de hace lo que quiero pero al ejecutar se cuelga el programa, gracias.
  #2 (permalink)  
Antiguo 22/11/2013, 17:01
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Vector dinamico de clases

Revisa las lineas 19 y 20:

Código C++:
Ver original
  1. cosa = new char;
  2. strcpy(cosa,"ola");

Estas reservando memoria para 1 caracter, luego le copias 3 y finalmente obtienes una violacion de segmento. Ya que estas en c++ usa el objeto string en vez de las chars, o un objeto contenedor vector de chars. Si es necesario que uses chars entonces reserva memoria para mas de un char:

Código C++:
Ver original
  1. char *cosa = new char[4];
  2. memset(cosa, 0, 4);
  3. strcpy(cosa,"ola");

No he mirado el resto del codigo, prueba a solucionar esto a ver que tal.

Saludos
vosk
  #3 (permalink)  
Antiguo 26/11/2013, 11:47
 
Fecha de Ingreso: noviembre-2013
Mensajes: 2
Antigüedad: 11 años
Puntos: 0
Respuesta: Vector dinamico de clases

Muchas gracias, al final estudiando estudiando y estudiando c++, he visto que lo que queria hacer se hace con las famosas listas que ya he logrado entender y poner en practica, gracias de nuevo

Etiquetas: clases, dinamico, int, programa, vector
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 13:53.