Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Creación de objetos y paso como parámetro

Estas en el tema de Creación de objetos y paso como parámetro en el foro de C/C++ en Foros del Web. Buenos días, miren tengo una duda de principiante en c++. La cuestión es que quiero crear un objeto y enviárselo como parámetro a un método ...
  #1 (permalink)  
Antiguo 26/01/2014, 03:31
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Creación de objetos y paso como parámetro

Buenos días,

miren tengo una duda de principiante en c++. La cuestión es que quiero crear un objeto y enviárselo como parámetro a un método de esa clase.

Es decir:

class A{
// Crearme un puntero a la clase b
B *puntero;

// Declararme una clase de B
B objeto = new B();

//y hacer algo asi como..
puntero->metodo(objeto);

}

//y en la clase B..

class B{
void metodo(B objeto);
}


El caso es que no me deja crearme un objeto de esta manera B objeto = new B(); y me obliga a crearme un puntero B *objeto= new B(); y no se como enviarle un objeto de B a metodo.

Gracias por vuestras respuestas de antemano.
  #2 (permalink)  
Antiguo 26/01/2014, 05:34
Avatar de iFuSiiOnzZ  
Fecha de Ingreso: junio-2012
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Creación de objetos y paso como parámetro

B objeto = new B() esto nunca te lo va a dejar hacer. El new sirve para alocar memoria y en este caso object es una variable de tipo B no un puntero. Si no quieres declararlo como puntero haz B objeto(), recuerda que no es un puntero y el acceso a algún método se hace objeto.metodo(). Deberías mírate un poco el concepto de punteros.
  #3 (permalink)  
Antiguo 26/01/2014, 07:18
 
Fecha de Ingreso: enero-2014
Mensajes: 6
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Creación de objetos y paso como parámetro

Perdona el objeto que quiero crear y enviarle es de la clase A por eso me creo el puntero de B para poder acceder al método.

Pero la duda la tengo ahora en cómo declarar el parámetro de entrada en el método.

Si hago me declaro A objeto(); y quiero que sea un parámetro de entrada, no me deja declararlo en la función así:

void metodo(A objeto);

¿Cómo podría hacerlo?.
  #4 (permalink)  
Antiguo 26/01/2014, 09:58
Avatar de iFuSiiOnzZ  
Fecha de Ingreso: junio-2012
Mensajes: 8
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Creación de objetos y paso como parámetro

A ver si esto te ayuda, en todo caso, cuando hay que tratar con Objetos lo mejor es usar punteros.

Código C++:
Ver original
  1. #include <cstdio>
  2. #include <string>
  3. #include <cstdlib>
  4.  
  5. class A {
  6.     private:
  7.         std::string str;
  8.  
  9.     public:
  10.         A(void)
  11.         {
  12.         }
  13.  
  14.         A(std::string str)
  15.         {
  16.             this->str.assign(str);
  17.         }
  18.         ~A()
  19.         {
  20.             this->str.clear();
  21.         }
  22.  
  23.         void mostrarString(void)
  24.         {
  25.             std::printf("%s\n", this->str.c_str());
  26.         }
  27. };
  28.  
  29. class B {
  30.     private:
  31.         A objA;
  32.  
  33.     public:
  34.         B(void)
  35.         {
  36.         }
  37.  
  38.         ~B()
  39.         {
  40.         }
  41.  
  42.         void anadirA(A obj)
  43.         {
  44.             objA = obj;
  45.         }
  46.  
  47.         void mostrarStringA()
  48.         {
  49.             objA.mostrarString();
  50.         }
  51. };
  52.  
  53.  
  54. int main(int argc, char *argv[])
  55. {
  56.     A objA("Hola Mundo Desde A");
  57.     B objB;
  58.  
  59.     objB.anadirA(objA);
  60.     objB.mostrarStringA();
  61.  
  62.     getchar();
  63.     return(EXIT_SUCCESS);
  64. }

Etiquetas: objetos-clases
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:58.