Hello i have a problem with includes. The situation is like this:
-Concepts: (NOTE: "....." is to separate the parts of the diagram and make it understable....)
I am designing a program in 3-tier achitecture. The class diagram is like this:
ControladorDomini (domain controller)
| ....... \
Soci .... Abonat
............. |
............. Tarifa
Now, i want to relation Soci and Tarifa to a new class called Servei. The design should be in that way.
So it would be:
ControladorDomini (domain controller)
| ....... \
Soci Abonat
| ....... |
\ ....... Tarifa
\ ....... /
\ ....... /
Serveis
-Code:
ControladorDomini.h
Soci.hCode:#ifndef _DOMINI_H_ #define _DOMINI_H_ #include "Abonat.h" //#include "Servei.h" #include "Soci.h" #include <iostream> #include <string> #include <fstream> #include <stdlib.h> #include <vector> #include <map> #include "ControladorDades.h" #include <time.h> #include <direct.h> using namespace std; class ControladorConsola; class ControladorDades; class ControladorDomini { private: //atributs ControladorConsola* _cc; ControladorDades* _cbd; //ControladorPantalla _cp; map<int,Abonat> _abonats;//key el num map<int,Soci> _socis;//key el num fstream _log; time_t _tempsLog; bool _connectat; bool _estable; public: //functions..... }; #endif
Abonat.hCode:#include <iostream> #include <string> #include <map> #include <vector> #include "Servei.h" using namespace std; class Soci{ private: //atributs int _id; int _numSoci; int _llicencia; string _dni; string _nom; string _cognoms; string _telefon; string _email; bool _actiu; map<int,Servei> _serveis; public: //functions.... };
Tarifa.hCode:#include <iostream> #include <string> #include <map> #include "Tarifa.h" #include <vector> using namespace std; class Abonat{ private: //atributs int _id; int _numAbonat; string _cif; string _nom; string _telefon; string _email; string _direccio; string _poblacio; string _codiPostal; bool _actiu; map<string,Tarifa> _tarifes; public: //functions... };
I think that the problem is that in ControladorDomini.h, Servei.h is included 2 times: one coming from Soci.h and the other coming from Tarifa.h -> Abonat.hCode:#include <iostream> #include <string> #include <vector> #include <map> #include "Servei.h" using namespace std; class Tarifa { private: //atributs int _id; string _codi; float _import; float _importSoci; int _idAbonat; bool _actiu; map<int,Servei> _serveis; public: //functions... };
I need have acces to Servei in Soci and in Tarifa... so i don't know how to solve it....
The compiler error is like this:
Servei.h(7) : error C2011: 'Servei' : nueva definición del tipo 'class'
1> Servei.h(7) : vea la declaración de 'Servei'
The translation:
Servei.h(7) : error C2011: 'Servei' : new definition from type 'class'
1> Servei.h(7) : go to the declaration of 'Servei'
Thank you very much for the help!!!!
Imanol.




Reply With Quote
