Programación General > C/C++
Aprendiendo poo en c++
(1/1)
vanessa99:
Hola tengo un programa muy sencillo... todo lo necesito dividido en funciones y aplicando reutilizacion, con una funcion capturo el nombre con otra la edad y con otra el peso... luego hago una funcion para imprimir el nombre edad y peso.... el caso es que hago la funcion de capturar nombre y bien... pero al imprimirla, ps no se como retornar un char al main... no se como hacer esa funcion... aqui esta el codigo
--- Código: C++ ---#include<iostream.h>#include <string.h> class Persona{ char nombre[15], genero[15]; int peso, edad; public: void asignar_nombre(char n[15]); void asignar_genero(char g[15]); void asignar_edad(int e); void asignar_peso(int p); void mostrar_nombre(); int mostrar_edad(); int mostrar_peso(); }; void Persona::asignar_nombre(char n[15]){ strcpy(nombre,n);} void Persona::asignar_genero(char g[15]){ strcpy(genero,g);} void Persona::mostrar_nombre(){ cout<<nombre;} void Persona::asignar_edad(int e){ edad=e;} void Persona::asignar_peso(int p){ peso=p;} int Persona::mostrar_edad(){ return(edad);} int Persona::mostrar_peso(){ return(peso);} main(){ Persona Pedro; int x; char a[20]; cout<<"Ingrese nombre: "; gets(a); Pedro.asignar_nombre(a); cout<<"Ingrese Edad: "; cin>>x; Pedro.asignar_edad(x); cout<<"Ingrese peso: "; cin>>x; Pedro.asignar_peso(x); system("cls"); Pedro.mostrar_nombre()<<endl; cout<<Pedro.mostrar_edad()<<endl; cout<<Pedro.mostrar_peso()<<endl; cout<<endl; system("pause");}
punteroNULO:
Si quieres que la función devuelva una cadena de caracteres simplemente indica que el tipo de retorno:
--- Código: C ---char * Persona::mostrar_nombre(){ return nombre;}
y modificar finalmente:
--- Código: C ---cout<<Pedro.mostrar_nombre()<<endl;
vanessa99:
Si me compila muy bien gracias... solo que parece que esto va en contra de la ley de reutilizabilidad del código y así no es valido... como podria retornar sin afectar lo que es la programacion orientada a objetos?
punteroNULO:
--- Cita de: "vanessa99" ---Si me compila muy bien gracias... solo que parece que esto va en contra de la ley de reutilizabilidad del código y así no es valido... como podria retornar sin afectar lo que es la programacion orientada a objetos?
--- Fin de la cita ---
Si te refieres a que devolviendo el puntero, desde fuera de la clase se puede modificar el valor. Es verdad.
Pero se puede solucionar facilmente copiando en otro puntero que será la salida.
--- Código: C ---char * Persona::mostrar_nombre(){ char *aux; aux = (char *)malloc(sizeof(char)* strlen(nombre)+1); //asignamos espacio: longitud del texto más caracter de fin de cadena strcpy(aux,nombre); // copiamos el contenido return aux;}
Navegación
Ir a la versión completa