Salve sono un novizio del C++, e per diletto a scopo didattico, stavo riscrivendo un piccolo applicativo, scritto in java, in C++ anche per capire meglio le differenze e il diverso approccio di questo linguaggio.
Mi son letto un paio di guide basilari, ma tanto per ora di esercizi basilari si parla, ma non ho capito se la cosa che ora esporrò non è possibile farla o non sono in grado io con la mia scarsa esperienza.
In pratica ho due classi A e B. In A un attributo di tipo B e in B un attributo di tipo A.
In base a come le dichiaro(se prima una o l'altra) mi da errore di non identificazione di un tipo o dell'altro. Non fa differenza se messe nello stesso header o in header differenti.
Riporto l'esempio per chiarir meglio la cosa.
class A {
B x; //qui mi da errore di tipo non definito
public:
A() {
}
~A(){
}
};
class B {
A y; //qui da errore se dichiaro prima B di A e ovviamente in questo caso non lo da sopra
public:
B() {
}
~B(){
}
};
Andando a logica che non riconosca il tipo B quando è su uno stesso header mi sta anche bene perchè lo dichiaro dopo.
Ma nel caso in cui ho un header B.h in cui dichiaro B e includo A.h e un file A.h in cui dichiaro A e includo B.h perchè da lo stesso errore? probabilmente applica una precedenza di inclusione e di fatto ricrea il caso di cui sopra. Ma allora come posso fare? Anche dichiarando friend B ad A la cosa non cambia.
Ho detto castronerie? Se si fatemelo notare senza problemi ^^