[C con Clase] Clases compuestas

Steven Richard Davidson stevenrichard.davidson en gmail.com
Mie Sep 12 22:56:25 CEST 2007


Hola Rosario,

On 9/11/07, Rosario <extraterrestre710 en hotmail.com> wrote:
> Hola a todos:
>
> Tengo un problema con el uso de las clases compuestas, tanto en el constructor de la clase principal, como la definición de las funciones mienbro que tiene que ver con esta, mi pregunta es: como le podria hacer para que por medio de la clase principal, pueda llamar una función que llene y otra que imprima los datos miembro de una clase que pertenece a la principal???
>

Tienes dos posibles soluciones:

1. Crear una función miembro de la clase principal para retornar el
objeto miembro. Por ejemplo,

class Principal
{
private:
  int dato;
  Compuesta obj;

public:
  Compuesta & objeto()  { return obj; }
  ...
};

Para luego, usar tal función de la siguiente manera:

Principal oPrincipal;

oPrincipal.objeto().leer();
oPrincipal.objeto().escribir();

O cualquier función miembro de la clase 'Compuesta'.

En lugar de retornar una referencia, podrías retornar un puntero. Por ejemplo,

class Principal
{
private:
  int dato;
  Compuesta *pObj;

public:
  Compuesta * objeto()  { return pObj; }
  ...
};

Obviamente, usaríamos el operador ->; esto es,

Principal oPrincipal;

oPrincipal.objeto()->leer();
oPrincipal.objeto()->escribir();

2. En la clase principal, puedes definir funciones miembros dedicadas
a la manipulación del objeto de la clase "compuesta". Por ejemplo,

class Principal
{
private:
  int dato;
  Compuesta obj;

public:
  void leer_objeto()  { obj.leer(); }
  void escribir_objeto()  { obj.escribir(); }
  ...
};

El uso es como cualquier función miembro de una clase:

Principal oPrincipal;

oPrincipal.leer_objeto();
oPrincipal.escribir_objeto();


Espero haber aclarado un poco la duda.

Steven




Más información sobre la lista de distribución Cconclase