scusate per la lunghezza ma ho usato il codice per simulare l'utilizzo che dovevo farne per accertarmi che tutto funzionasse perfetamente
(la faccina che ride è [faccine di merda])
a.h:
codice:
#ifndef _a
#define _a
#include "object.h"
#include "c.h"
class a : public object {
public:
a();
void print();
void set_b( object * );
object *B;
};
#endif
a.cpp
codice:
#include "a.h"
a::a(){}
void a::print() {
printf("a\n");
}
void a::set_b( object *ptr ) {
B = ptr;
((b*)ptr)->print();
}
b.h
codice:
#ifndef _b_
#define _b_
#include "object.h"
#include "a.h"
#include "c.h"
class b : public object {
public:
b();
void print();
void set_a( object * );
void set_c( object * );
object *A;
object *C;
};
#endif
b.cpp
codice:
#include "b.h"
b::b() {}
void b::print() {
printf("protocol\n");
}
void b::set_c( object *ptr ) {
C = ptr;
((c*)ptr)->print();
}
void b::set_a( object *ptr ) {
A = ptr;
((a*)ptr)->print();
}
c.h
codice:
#ifndef _c_
#define _c_
#include "object.h"
#include "a.h"
#include "b.h"
struct c : public object {
public:
c();
void print();
void set_b( object * );
void set_a( object * );
object *A;
object *B;
};
#endif
codice:
#include "c.h"
c::c(){}
void c::print() {
printf("c\n");
}
void c::set_b( object *ptr ) {
B = ptr;
((b*)ptr)->print();
}
void c::set_a( object *ptr ) {
A = ptr;
((a*)ptr)->print();
}
object.h
codice:
#ifndef _object_
#define _object_
#include <stdio.h>
class object {};
#endif
main.cpp
codice:
#include "a.h"
#include "b.h"
#include "c.h"
int main() {
a *A = new a();
b *B = new b();
c *C = new c();
B->set_a(A);
B->set_c(C);
}