[C con Clase] Duda

Davidson, Steven srd4121 en njit.edu
Vie Jul 25 17:46:29 CEST 2014


Hola Miguel Alejandro,

2014-07-25 9:40 GMT-04:00 Miguel Alejandro Jimenez Ramirez <
cerberbero en gmail.com>:

>  Hola a todos ,el dia de hoy tengo una duda , es algo conceptual.
> Cuando tengo un archive header y aparecen declaraciones asi:
>
> //Forward declaration
>
> class A;
> Class B;
> .
> .
> .
>
> Que significa el comentario , forward declaration , no entiendo bien ,
> ya que he intentado ver la declaracion de algunas de las clases y no
> lo logro , no se si me explico bien , pero si me entieneden la
> pregunta , me gustaria aclarar esta duda.
>
>
Se trata de declaraciones adelantadas o anticipadas. Esto se hace para
establecer las entidades al compilador, ya que a veces sólo necesita
conocer su declaración antes de usarla; o sea, ¿qué es esto? En cuanto a
clases concierne, es posible que tengamos una situación en la que ambas
clases contienen un objeto de la otra clase. Por ejemplo,

class ClaseA
{
  ClaseB *pObj;  // Error: ¿qué es 'ClaseB'?
};

class ClaseB
{
  ClaseA *pObj;
};

Aquí tenemos un error, porque la definición de 'ClaseA' depende de la
declaración de 'ClaseB'. El compilador no sabe qué es 'ClaseB': ¿es una
función? ¿es una clase? ¿es un 'typedef'? Por esto, el compilador requiere
que existan las declaraciones antes de poder usar tales entidades.

La solución es declarar cada entidad y luego completar sus definiciones;
esto es,

// Para que el compilador entienda qué es cada entidad: son clases
class ClaseA;
class ClaseB;

class ClaseA
{
  ClaseB *pObj;
};

class ClaseB
{
  ClaseA *pObj;
};


Espero haber aclarado la duda.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140725/e7852f07/attachment.html>


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