elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cómo pasar parámetros.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cómo pasar parámetros.  (Leído 2,389 veces)
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Cómo pasar parámetros.
« en: 29 Marzo 2014, 01:44 am »

Hoy estuve creando mi primer programa en c++
He leído todo lo necesario, aun no logro comprender apuntadores y constructores xDD
Así que estaré molestando por este subforo :P

Pero hay algo que no he podido hacer y no entiendo (ademas de lo ya mencionado) por más que busco.
¿Cómo rayos paso un valor leído por teclado a un método?.

Las clases con las que estoy trabajando son, Empresa, Empleado, Directivo, Cliente y Persona

Tengo lo siguiente.

Empresa.h
Código
  1. #ifndef EMPRESA
  2. #define EMPRESA
  3. #include<string.h>
  4.  
  5. /* Clase empresa*/
  6. class Empresa {
  7.  
  8.      //Atributos
  9.      private:
  10.              char* empresa;
  11.              char direccion;
  12.              char telefono;
  13.  
  14.      //Metodos
  15.      public:
  16.             //Empresa(char* empresa, char direccion, char telefono);
  17.             //~Empresa();
  18.             void EstablecerNombreEmpresa(char* empresa);
  19.             void EstablecerDireccionEmpresa(char direccion);
  20.             void EstablecerTelefonoEmpresa(char telefono);
  21.             char* ObtenerNombreEmpresa();
  22.             char ObtenerDireccionEmpresa();
  23.             char ObtenerTelefonoEmpresa();
  24.             void RegistrarEmpresa(char* empresa, char direccion, char telefono);
  25.  
  26. };
  27.  
  28. void Empresa::EstablecerNombreEmpresa(char* empresa) {
  29.     empresa = empresa;
  30. }
  31.  
  32. char* Empresa::ObtenerNombreEmpresa() {
  33.      return empresa;
  34. }
  35.  
  36. void Empresa::EstablecerDireccionEmpresa(char direccion) {
  37.     direccion = direccion;    
  38. }
  39.  
  40. char Empresa::ObtenerDireccionEmpresa() {
  41.     return direccion;    
  42. }
  43.  
  44. void Empresa::EstablecerTelefonoEmpresa(char telefono) {
  45.     telefono = telefono;    
  46. }
  47.  
  48. char Empresa::ObtenerTelefonoEmpresa() {
  49.     return telefono;    
  50. }
  51.  
  52. void Empresa::RegistrarEmpresa(char* empresa, char direccion, char telefono) {
  53.     //Guardar en lista    
  54. }
  55.  


main.cpp
Código
  1. #include <iostream>
  2. #include "Empresa.h"
  3. #include <cstring>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9.    //Declaracion de objeto Empresa
  10.    Empresa miEmpresa;
  11.  
  12.    //Declarion variables
  13.    char emp;
  14.  
  15.    cout << "Escribe el nombre de la empresa" << endl;
  16.    cin>>emp;
  17.    miEmpresa.EstablecerNombreEmpresa(emp);
  18.  
  19.    return (0);
  20. }
  21.  


Esta parte es mi duda.

Código:
cout << "Escribe el nombre de la empresa" << endl;
    cin>>emp;
    miEmpresa.EstablecerNombreEmpresa(emp);

Cómo obtengo la variable para pasarla como parámetro?.

Por cierto en java y php en los setters y getters se manejan los this
Ejemplo php

Código
  1. Class User {
  2. ...
  3. private $name;
  4. ....
  5. fuction setName($name) {
  6. this->$name=$name;
  7. }
  8.  

Cual es el equivalente en C++, es que me gusta trabajarlo así xD

Gracias


« Última modificación: 31 Marzo 2014, 22:48 pm por Darhius » En línea

abc
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Cómo pasar parámetros.
« Respuesta #1 en: 29 Marzo 2014, 02:00 am »

en C++ la clase por defecto para almacenar cadenas de texto es la clase string. char* es un puntero. Los punteros simplemente "apuntan" a una posición de memoria, que es donde se almacena la información importante.

Los punteros permiten gestionar información de forma "remota":

Código
  1. int dato = 20;
  2.  
  3. // Declaras un puntero, pero no apunta a nada en concreto, no esta incializado
  4. int* puntero1;
  5.  
  6. // Ahora puntero1 apunta al valor de dato, cualquier cambio en puntero1 modificara el valor de dato
  7. puntero1 = &dato;
  8.  
  9. *puntero1 = 30;
  10.  
  11. std::cout << dato << endl; // imprime 30

En tu caso, los punteros no apuntan a nada en concreto, luego el programa te va a fallar.

Los constructores son funciones especiales que se llaman automáticamente cuando se crean instancias de los objetos.

Código
  1. class Objeto
  2. {
  3.  public:
  4.    Objeto( )
  5.    { std::cout << "Objeto creado" << std::endl; }
  6. };
  7.  
  8. int main( )
  9. {
  10.  Objeto objeto;
  11.  return 0;
  12. }

Este programa tiene como salida:

Código:
Objeto creado

Porque al crearse la instancia "objeto", se llama al constructor de "Objeto" automáticamente y este es el que imprime el mensaje. Los constructores permiten inicializar los valores de la clase para evitar que ésta tenga valores no válidos.

Los constructores tienen más historia, pero es mejor ir poco a poco.

En cuanto a tu código, si no quieres usar strings y prefieres char* tienes dos opciones:

Código
  1. // Te permite almacenar una cadena de 19 caracteres máximo
  2. // La memoria la libera el programa automaticamente
  3. char cadena[20];
  4.  
  5. // Te permite almacenar una cadena de 19 caracteres,
  6. // pero luego tienes que acordarte de liberar la memoria con delete
  7. char *cadena = new char[20];

Aunque lo más práctico suele ser usar la clase string, ya que te permite obviar la gestión de la memoria ( que ya te tocará pegarte con ella en otras partes del código ).

Código
  1. string cadena;
  2. cin >> cadena;

Y bueno, si puedo por la mañana te escribo más que me están metiendo prisa.

Un saludo.


En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Cómo pasar parámetros.
« Respuesta #2 en: 29 Marzo 2014, 07:16 am »

eferion

Muchas gracias por tu explicación, aunque ya lo había leído, solo que supongo que los apuntadores van más allá de lo que explicas.
Cuando inicie con el programa estaba utilizando string, solo que después miraba ejemplos en donde usaban char* xD y pensaba que era lo más correcto. Investigué sobre el * y entonces entendí que era para especificar que ese tipo de dato era un apuntador.

En cuanto a los constructores supongo que también puedes especificar un constructor con parametros como en otros lenguajes.

Seguiré con la aplicación, cualquier duda comento aquí mismo o en otro hilo dependiendo.

Nuevamente gracias!
En línea

abc
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Cómo pasar parámetros.
« Respuesta #3 en: 29 Marzo 2014, 10:28 am »

En C++ el this se escribe igual.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pasar parametros por ejecutable
Programación Visual Basic
Lambda 2 1,977 Último mensaje 18 Octubre 2006, 17:56 pm
por Lambda
Pasar parametros a un array
Scripting
El_Java 1 3,704 Último mensaje 17 Mayo 2011, 23:09 pm
por leogtz
Pasar 2 parámetros en inyección de código
ASM
Vaagish 9 5,239 Último mensaje 17 Julio 2014, 21:43 pm
por Eternal Idol
Como pasar parametros de un formulario .aspx a una clase .vb
Desarrollo Web
lucilaperez 1 1,648 Último mensaje 19 Septiembre 2015, 01:30 am
por eLank0
Duda sobre cómo pasar parámetros a una función
PHP
KateLibby 7 5,948 Último mensaje 6 Octubre 2022, 09:31 am
por KateLibby
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines