Salve a tutti,
sto provando a fare un progettino in c++, preso da internet, con eclipse su ubuntu 9.4 che ha un file header shapeinterface.h nel quale ci sono una classe astratta shape con varie funzioni virtuali, ereditate da due classi sempre virtuali polygon e regular, poi finalmente ridefinite nelle classi concrete dot, line, triangle...
non so perchè il compilatore mi da degli errori relativi alla classe polygon, come se non fosse ben dichiarata.
vi posto il codice in breve (parti salienti):
file shapeinterface.h:
quindi in sostanza gli errori sonocodice:#include<iostream> using namespace std; //questo me lo fa mettere per forza perchè altrimenti non mi prende //l'overloading degli operatori << e >>; ma io volevo usare un namespace //diverso, infatti sotto l'ho definito: namespace mini_graphics { struct Point {....}; //struttura Point che mi rappresenta i punti del piano struct Shape_Error {....}; //gestione delle eccezioni con costrutti throw ostream& operator<<(ostream& out, const Point& p); //overloading perchè funzionino con i istream& operator>>(istream& inp, Point& p); //Punti del piano class Shape{ public: .... .... //varie funzioni virtuali tutte inizializzate a zero }; class Polygon:virtual public Shape { //QUI C'è L'ERRORE: FORWARD DECLARATION OF 'CLASS MINI_GRAPHICS::POLYGON protected: .... public: .... //ridefinizione delle funzioni virtuali necessarie }; class Dot:public Polygon {ERRORE:invalid use of incomplete type 'class mini_graphics::Polygon'; public: using Polygon::set; //QUI ALTRO ERRORE, ripetuto in tutte le classi successive derivate (line, triangle...):type 'mini_graphics::Polygon' is not a base type for type 'mini_graphics::Polygon::Dot Dot(); .... .... };
1)invalid use of incomplete type 'class mini_graphics::Polygon';
2)forward declaration of 'class mini_graphics::Polygon';
3)type 'mini_graphics::Polygon' is not a base type for type 'mini_graphics::Polygon:ot'.
Perchè? mi sembra di averla definita bene la classe polygon, è come se non mi accettasse l'ereditarietà, non capisco.
Scusate se è un errore da newbie ma sto preparando da sola l'esame in c++ perchè il simpatico profe veniva a lezione a leggerci le dias, :berto: cosa totalmente inutile visto che posso farlo da sola.
Grazie in anticipo per l'attenzione
Gioia