<div dir="ltr">Hola Agustín,<div class="gmail_extra"><br><div class="gmail_quote">2013/10/23 Agustín Cota Reguero <span dir="ltr"><<a href="mailto:clom2002@yahoo.es" target="_blank">clom2002@yahoo.es</a>></span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div style="font-size:12pt;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><div>Hola a todos, a ver si podeis ayudarme con un problema que tengo que me trae loco.</div>
<div><br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">Tengo un proyecto creado en Code::blocks en el que defino dos clases:</div>
<div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
ClaseA   ClaseA.cpp ClaseA.h</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">ClaseB <span>  ClaseB.cpp ClaseB.h</span></div>
<div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><br><span></span></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
<span>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.</span></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
<br><span></span></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><span>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.</span></div>
<div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><br><span></span></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif">
<span>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.</span></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:HelveticaNeue,'Helvetica Neue',Helvetica,Arial,'Lucida Grande',sans-serif"><br></div></div>
</div></blockquote><div><br></div><div>La solución es usar declaraciones adelantadas. Por ejemplo,</div><div><br></div><div>class ClaseA;<br></div><div>class ClaseB;<br></div><div>...</div><div><br></div><div>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,</div>
<div><br></div><div>// defs_base.h</div><div><br></div><div>class ClaseA;</div><div>class ClaseB;<br></div><div>class ClaseC;<br></div><div>class ClaseD;<br></div><div>...</div><div><br></div><div>Y luego todos los demás ficheros de cabecera #incluyen éste,</div>
<div><br></div><div>// ClaseA.h</div><div>#include "defs_base.h"<br></div><div>...</div><div><br></div><div><div>// ClaseB.h</div><div>#include "defs_base.h"<br></div><div>...</div><div><br></div></div>
<div><br></div><div>Espero que esto te sirva.</div><div><br></div><div>Steven</div><div><br></div></div></div></div>