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:
Archivo *.cpp de la clase#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); };
Código:
Función main del programa:#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); }
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; }