PDA

Visualizza la versione completa : [C++] Header che si includono a vicenda


edriv
31-12-2005, 16:42
Nel mio progetto ho due file header che si includono in questo modo:

fogwer.h include selectlist.h
selectlist.h include fogwer.h

Inoltre ogni file .h ha questa struttura:


#ifndef __SELECTLIST_H_
#define __SELECTLIST_H_

#include "fogwer.h"

namespace RDE {
// codice e classi
}
#endif


Quando compilo (con gcc), in selectlist.h (l'ultimo ad essere incluso: fogwer.cpp->fogwer.h->selectlist.h) non mi riconosce nessun simbolo.

Forse perchè con gli #ifndef ora non puo' includere di nuovo fogwer.h, già incluso da fogwer.cpp? A me il motivo sembra questo.
Però se tolgo gli #ifndef cominciano gli errori di ridefinizione...

voi che avete più pratica, potete dirmi dove sbaglio?
Grazie :ciauz:

edriv
01-01-2006, 16:21
Lo dico in modo più chiaro.

La classe Program contiene una SelectList.
La classe SelectList contiene un puntatore a Program.

Come risolvo questa "ricorsività"?
L'unico modo è metterli nello stesso file header?

pprllo
02-01-2006, 20:18
L'unica è metterli nello stesso header ... Comunque in generale i riferimenti circolari andrebbero evitati e probabilmente puoi evitare il problema semplicemente riprogettando le classi in modo che non siano "annidate" in quel modo.

internet
02-01-2006, 20:55
Prova a risolvere con le "forward declarations"
http://en.wikipedia.org/wiki/Circular_dependency

edriv
02-01-2006, 21:22
Grazie alla fine ho risolto mettendo nello stesso header.

Riprogettare "eegantemente" probabilmente avrebbe significato un bordello inconcepibile di templates (e ho perso un giorno provandoci).

Ma il mio progettino è molto più semplice e va benissimo così.

quakeman2
04-01-2006, 20:08
Piu che altro non riesco a capire come hai fatto a riuscire a creare questo problema.
Penso che sia il caso di riprogettare il tutto
:-)

Loading