[C con Clase] Problema con cabeceras.

Davidson, Steven srd4121 en njit.edu
Mie Oct 23 17:52:37 CEST 2013


Hola Agustín,

2013/10/23 Agustín Cota Reguero <clom2002 en yahoo.es>

> Hola a todos, a ver si podeis ayudarme con un problema que tengo que me
> trae loco.
>
> Tengo un proyecto creado en Code::blocks en el que defino dos clases:
>
> ClaseA   ClaseA.cpp ClaseA.h
> ClaseB   ClaseB.cpp ClaseB.h
>
> Ahora bien, la clase A tiene un miembro que es un objeto de la clase B y a
> su vez la clase B tiene funciones que usan objetos de la clase A.
>
> Si hago #include ClaseA.h en el fichero ClaseB.h y tambien #include
> ClaseB.h en ClaseA.h no reconoce algun tipo y da errores.
>
> Mi pregunta es si existe alguna manera (que no sea el definir tanto ClaseA
> como ClaseB en el mismo fichero) para que esto no pase.
>
>
La solución es usar declaraciones adelantadas. Por ejemplo,

class ClaseA;
class ClaseB;
...

Algunos diseñadores de bibliotecas crean otro fichero de cabecera que sólo
contiene estas declaraciones. Usan este fichero como base para el resto de
los ficheros de cabecera en la biblioteca. Por ejemplo,

// defs_base.h

class ClaseA;
class ClaseB;
class ClaseC;
class ClaseD;
...

Y luego todos los demás ficheros de cabecera #incluyen éste,

// ClaseA.h
#include "defs_base.h"
...

// ClaseB.h
#include "defs_base.h"
...


Espero que esto te sirva.

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


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