[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