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

[0] Índice de Mensajes

Ir a la versión completa