[C con Clase] Duda

Giancarlo Dotta gcdotta en gmail.com
Vie Jul 25 17:51:44 CEST 2014


Hola Miguel, el comentario sólo te dice que a continuación vienen dos
forward declarations. El comentario es redundante. Efectivamente lo de
"class A;" y "class B;" son "forward declarations" ya que en realidad no
declaran nada de como están hechas A y B. Eso quiere decir que esas clases
A y B se declararán más adelante y no aquí. Aquí sólo se ponen para indicar
que van a estar sus declaraciones donde sea que estén, pero que de momento
se pueden usar A y B en otras declaraciones, aún sin saber exactamente como
son.

Por ejemplo, sirve para esto:

class A;  // esto es una forward declaration

class B {  // declaración real de la clase B
    A objetoA; // tiene una variable de tipo A
};

class A {  // declaración real de la clase A
    B objetoB; // tiene una variable de tipo B
};

Es decir las clases A y B son clases que se llaman la una a la otra. Al
declararlas normalmente una tiene que ir antes que la otra en el fichero.
Entonces, si no estuviera la forward declaration de class A, el compilador,
al encontrarse en class B, que se está usando una variable (objetoA) de
tipo A, diría: "oye que esta A no la conozco de nada, así que esto es un
error". Y es que el compilador de C++ sólo puede hacer uso de aquello que
le has declarado previamente. Por eso le pones la  forward declaration de
class A antes de la declaración de class B. Entonces, con eso, ya sabe que
A existe y que es una clase normal y que ya le explicarán más adelante cómo
está hecha. Así que toma nota de ello y sigue compilando sin errores. Al
encontrarse más abajo con la declaración real de la clase A, ya completa la
de la clase B.

Ciao,
Giancarlo


El 25 de julio de 2014, 15:40, Miguel Alejandro Jimenez Ramirez <
cerberbero en gmail.com> escribió:

>  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.
>
>
> --
> MIGUEL ALEJANDRO JIMENEZ R.
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140725/8f91e925/attachment.html>


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