So che domande simili a questo sono state fatte prima, ma dopo aver fatto la mia ricerca ho ancora domande sull'intestazione circolare.L'intestazione circolare C++ include
//FooA.h
#ifndef H_FOOA
#define H_FOOA
#include "foob.h"
class FooA{
public:
FooB *fooB;
};
//FooB.h
#ifndef H_FOOB
#define H_FOOB
class FooA;
class FooB{
public:
FooA *fooA;
};
Ora, se ho due dipendenze circolari questo è il modo in cui ho visto la gente su StackOverflow aggirare il problema. Il mio unico problema è che nel mio main.cpp devo includo fooa.h prima e poi foob.h
//main.cpp the right way
#include "fooa.h"
#include "foob.h"
//main.cpp that will surely get a compile error
#include "foob.h"
#include "fooa.h"
Ora la mia domanda è "c'è un modo di trasmettere dichiarare queste classi in un modo che sarà permettimi di non preoccuparmi dell'ordine in cui includo i file header nel mio main.cpp? "
Poiché le risposte hanno sottolineato, è possibile utilizzare una dichiarazione anticipata in entrambi i file. Se la situazione fosse più complicata, potresti '#includere" fooa.h "' da 'foob.h', che garantirebbe l'ordine di inclusione desiderato. –
Non c'è nulla di circolare negli include nel codice di esempio. Se aggiungi il # end mancante manca tutto. Che errore di compilazione stai ottenendo? –