Oppure

Loading
19/02/11 16:54
Giarados
A.h include B.h
B.h include A.h

A.cpp viene compilato includendo A.h e B.h (incluso in A.h).

B.cpp non può essere compilato perché non trova la dichiarazione della classe A le cui istanze sono parametri di alcune funzioni membro della classe B.

Io penso che in questo gioco di inclusioni vengano passate al precompilatore le direttive
#ifndef _A_
#define _A_
class A
{
[...]
};

[...]
#endif


e che quindi risulti impossibile includere l'header.

Sinceramente non riesco a venirne fuori :pat:
Ultima modifica effettuata da Giarados 19/02/11 16:55
aaa
19/02/11 17:01
TheKaneB
A parte il fatto che sicuramente potresti riscrivere i due headers in un altro modo, risolvendo questo orribile circolo vizioso di dipendenze, la soluzione è in realtà molto semplice:

Negli headers non includere altri headers, ma fai una forward declaration.

Ad esempio se la classe B vuole elementi di tipo A, aggiungi:

class A;

tra le prime righe di B.h.

L'inclusione degli headers completi la fai nei file .cpp e in questo modo risolvi.
aaa
19/02/11 19:20
Giarados
Grazie dell'aiuto :)
aaa