Hola, he estado leyendo por la web sobre referencias cruzadas, y después de leer y mucho leer sigo con mi problema, os cuento el caso.
Tengo una clase Motor que "crea" dos clases (que heredan de Threads y de superclase) Clase1 y Clase2, mi problema es que quiero que estas clases a su vez puedan llamar a funciones de la clase MotorJuego que hereda de motor. (En Motor.h y MotorJuego.h defino la clase y los métodos, en el código siguiente lo pongo todo en el cpp para facilitar el entendimiento)
Os pongo parte del código (no funciona porque tengo includes infinitos):
---
Código c++:
Ver original#include <QThread>
#include "includes.cpp"
class motor
{
superclase *a, *b;
public:
void motor::inicializate_play()
{
a = new programaA::clase(this) ;
b = new programaB::clase(this) ;
a->inicializate();;
a->run();
}
};
---
Código c++:
Ver original#include "motor.h"
class motorJuego: public motor
{
public:
qDebug("Estoy avanzando");
if (s==a)
{
qDebug("Soy clase1");
}
else if (s==b)
{
qDebug("Soy clase2");
}
else qDebug ("Algo está mal");
}
};
---
Código c++:
Ver original#include "motorJuego.h"
class superclase: public QThread{
public:
virtual void run(){}
void inicializate()
{
hecho=0;
}
protected:
int hecho;
void avanzar(motorJuego *m, superclase *s)
{
qDebug("Voy a avanzar");
m->update_pos_player(s);
}
};
---
Código c++:
Ver original#include "superclase.cpp"
class clase: public superclase {
public:
clase (motorJuego *m)
{
mot=m;
}
void run() {
if (hecho==0) //inicializate
{
qDebug("Inicio 1") ;
} else if (hecho==1) //move
{
qDebug("Muevo 1") ;
avanzar(mot,this);
}
}
private:
motorJuego *mot;
};
---
Y el includes.cpp
Código c++:
Ver original#include <stdio.h>
namespace programaA {
#include "codigo1.cpp"
}
namespace programaB {
#include "codigo2.cpp"
}
Perdon por todo este rollo y a ver si alguien me puede ayudar, desde ya, gracias.