Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con "Referencias Cruzadas"

Estas en el tema de Problema con "Referencias Cruzadas" en el foro de C/C++ en Foros del Web. Hola buenas a todos pues mi problema consiste en lo que pone en el titular "Referencias Cruzadas" tengo un proyecto que tiene dos (.h) que ...
  #1 (permalink)  
Antiguo 02/05/2013, 02:48
Avatar de as3nsi0  
Fecha de Ingreso: mayo-2013
Mensajes: 1
Antigüedad: 11 años, 6 meses
Puntos: 0
Problema con "Referencias Cruzadas"

Hola buenas a todos pues mi problema consiste en lo que pone en el titular "Referencias Cruzadas" tengo un proyecto que tiene dos (.h) que se llaman mutuamente y mi problema es que cuando compilo me sale error porque me dice que una de las clases no esta definida.

Os dejaré mi código por aquí para que lo veais mejor ya que creo que no me he explicado muy bien:


#include "B.h"

#ifndef _A
#define _A

class A{
private:
B b;
...
public:
...
};

#endif


#include "A.h"

#ifndef _B
#define _B

class B{
private:
A a;
...
public:
...
};

#endif

Este es mi código y mi problema consiste que uno llama al otro y viceversa. He estabdo buscando por webs y demás y encontrado soluciones como dejar el código de la siguiente manera:


#include "B.h"

#ifndef _A
#define _A

class A{
private:
B b;
...
public:
...
};

#endif


class B;

#ifndef _B
#define _B

class B{
private:
A a;
...
public:
...
};

#endif

Y luego en el .cpp del B hacer referencia a A, es decir meter #include "A.h" en el B.cpp, pero mi problema sigue existiendo.

A ver si ustedes pueden ayudarme se lo agradecería mucho, porque llevo mucho tiempo buscandole solución a esto y no la he encontrado aún.
Muchas gracias de antemano =).
  #2 (permalink)  
Antiguo 02/05/2013, 06:04
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: Problema con "Referencias Cruzadas"

Prueba algo como esto:

Código C++:
Ver original
  1. #ifndef _A
  2. #define _A
  3.  
  4. class b; // Prototipo
  5.  
  6. class A{
  7. private:
  8. B b;
  9. ...
  10. public:
  11. ...
  12. };
  13.  
  14. #endif

Código C++:
Ver original
  1. #include "A.h"
  2.  
  3. #ifndef _B
  4. #define _B
  5.  
  6. class B{
  7. private:
  8. A a;
  9. ...
  10. public:
  11. ...
  12. };
  13.  
  14. #endif

Etiquetas: referencias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:20.