Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/01/2012, 17:09
gorystyle
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 11 meses
Puntos: 10
Problema con la STL vector..

Hola tengo este código:

Código C++:
Ver original
  1. #ifndef PERSONA_H
  2. #define PERSONA_H
  3.  
  4.  
  5. class Persona
  6. {
  7.     public:
  8.         Persona();
  9.         virtual ~Persona();
  10.         void setEdad(int);
  11.         void setNombre(char*);
  12.         int getEdad();
  13.         char* getNombre();
  14.     protected:
  15.     private:
  16.         int edad;
  17.         char *nombre;
  18. };
  19.  
  20. #endif // PERSONA_H


Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstring>
  3. #include "persona.h"
  4.  
  5. Persona::Persona()
  6. {
  7.     //ctor
  8. }
  9.  
  10. Persona::~Persona()
  11. {
  12.     //dtor
  13. }
  14.  
  15. void Persona::setEdad(int e)
  16. {
  17.     edad = e;
  18. }
  19.  
  20. void Persona::setNombre(char *nom)
  21. {
  22.     nombre = new char[strlen(nom)];
  23.     strcpy(nombre,nom);
  24. }
  25.  
  26. int Persona::getEdad()
  27. {
  28.     return edad;
  29. }
  30.  
  31. char* Persona::getNombre()
  32. {
  33.     return nombre;
  34. }


aqui la clase main

Código C++:
Ver original
  1. #include <iostream>
  2. #include <vector>
  3. #include "persona.h"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     vector <Persona*> personas;
  10.     char r;
  11.     do
  12.     {
  13.         char *n;
  14.         int e;
  15.         Persona *p;
  16.         p = new Persona;
  17.  
  18.         cout << "\nNombre: ";
  19.         cin >> n;
  20.         cout << "\nEdad: ";
  21.         cin >> e;
  22.         p->setEdad(e);
  23.         p->setNombre(n);
  24.         personas.push_back(p);
  25.         cout << "\nContinuar? : ";
  26.         cin >> r;
  27.     }while(r=='s');
  28.  
  29.     cout << "\n\nMostrando.." << endl;
  30.  
  31.     for(int i=0; i<personas.size(); i++)
  32.     {
  33.         cout << "\nNombre: " << personas[i]->getNombre();
  34.     }
  35.  
  36.     return 0;
  37. }

bien el programa debe preguntar nombre y edad y crear una persona y almacenarlo en el vector personas hasta que el usuario diga que no quiere continuar.. y luego mostrar los nombres.. el programa lo hace muestra los nombres pero termina creo q abruptamente pq me sale un dialogo de error en windows que dice cerrar programa, buscar solucion en linea, depurar el programa.. pq será?? creo que es pq no libero la memoria que utilizo de ser esto cierto como lo hago?? gracias!