Ciao a tutti!
Ho un problema con la direttiva include:
ho 4 file: FiguraGeometrica.h, Triangolo.h, Quadrato.h e Source.cpp.
i primi tre file contengono le intestazioni di tre classi omonime, inoltre sia Triangolo che Quadrato sono figlie di FiguraGeometrica. Ecco il codice:
FiguraGeometrica.h:
codice:
class FiguraGeometrica {
public: char* nome;
void disegnaFigura();
};
Triangolo.h:
codice:
#include "FiguraGeometrica.h"
class Triangolo : public FiguraGeometrica {
public:
void disegnaFigura();
};
Quadrato.h:
codice:
#include "FiguraGeometrica.h"
class Quadrato : public FiguraGeometrica{
};
Source.cpp:
codice:
#include "stdafx.h"
#include "Triangolo.h"
#include "Quadrato.h"
#include "stdlib.h"
void FiguraGeometrica :: disegnaFigura() {
printf("Disegna figura geometrica!\n");
};
void Triangolo :: disegnaFigura() {
printf("Disegna un triangolo!\n");
};
int _tmain() {
FiguraGeometrica * fig=new FiguraGeometrica;
Triangolo * tri=new Triangolo;
Quadrato * quad=new Quadrato;
tri->disegnaFigura();
system("PAUSE");
}
quando eseguo Source mi dà il seguente errore:
error C2011: 'FiguraGeometrica' : 'class' type redefinition
credo perché l'istruzione #include "FiguraGeometrica.h" viene incontrata più volte (essendo stata utilizzata sia in Triangolo.h che in Quadrato.h ). Come posso fare per evitare questo problema?
Grazie in anticipo!