Tengo creada una clase a partir de la cual creo dos subclases en la funcion main del programa. Una de ellas la inicializo con determinados valores; para la otra, me los pide el programa por defecto (debido a la funcion constructora).
Lo que quiero realizar es copiar la subclase que tengo incializada en la otra.
Consigo que todos los datos se almacenen correctamente en la otra cadena, y prosigue el programa, pero una vez q prosigue el programa vuelve a sus antiguos valores (los introducidos por la funcion constructora). Esto lo he visto en el debugger.
Os paso los códigos:
(están realizados con Visual C++ 2008 Express Edition)
Muchas gracias de antemano! un saludo!
Archivo *.h de la clase
Código:
#pragma once
class cPersona
{
private:
int edad;
float talla;
char nombre [20];
public:
void setEdad (int e);
int getEdad (void);
void setAltura(float a);
float getAltura(void);
void setNombre(char n[20]);
char* getNombre(void);
cPersona ();
cPersona (int e, float a, char n[20]);
~cPersona ();
void copia(class cPersona);
};
Archivo *.cpp de la clase
Código:
#include "cPersona.h"
#include <string.h>
#include <stdio.h>
void cPersona::setEdad (int e)
{
edad = e;
}
int cPersona::getEdad (void)
{
return edad;
}
void cPersona::setAltura(float a)
{
talla = a;
}
float cPersona::getAltura(void)
{
return talla;
}
void cPersona::setNombre(char n[20])
{
strcpy_s(nombre, n);
}
char* cPersona::getNombre()
{
return nombre;
}
cPersona::cPersona ()
{
printf ("\nEscribe la edad:");
scanf_s("%d",&edad);
printf ("\nEscribe la altura:");
scanf_s("%f",&talla);
printf ("\nEscribe el nombre:");
fflush (stdin); gets_s(nombre);
}
cPersona::cPersona (int e, float a, char n[20])
{
edad = e;
talla = a;
strcpy_s (nombre,n);
}
cPersona:: ~cPersona ()
{
printf ("La persona %s se autodestruira inmediatamente.\n", nombre);
}
void cPersona:: copia (cPersona p)
{
p.setEdad (edad);
p.setAltura (talla);
p.setNombre (nombre);
}
Función main del programa:
Código:
#include "cPersona.h"
#include <stdio.h>
int main (void)
{
cPersona p;
cPersona q(6, 7.6F, "Pedro");
q.copia (p);
printf (" La edad de %s es %d\n", p.getNombre(),p.getEdad());
return 0;
}