Me revoilà pour une nouvelle question, qui se rapproche de ce cas:
Mais la solution que j'avais trouvée ne fonctionne pas ici, et le problème est plus complexe.
J'ai:
- une classe d'objet: Objet (.hpp et .cpp)
- une structure: Structure (.hpp)
- un namespace pour diverses actions: Namespace (.hpp et .cpp)
La structure Structure a une variable membre de type Objet; et le namespace Namespace a des fonctions qui utilisent la structure Structure.
Jusque là, tout va bien, aucune erreur de compilation, les objets, structures, namespaces et fonctions sont déjà utilisés, tout fonctionne.
Maintenant, pour des questions de fonctionnement de mon programme, je voudrais utiliser une des fonctions de Namespace dans Objet. J'inclus donc dans Objet.hpp le Namespace.hpp. Et là, c'est le drame, avant même de faire quoi que ce soit d'autre, pas d'utilisation de fonction, rien, juste l'include, le compilateur m'envoie des erreurs à la pelle concernant la fonction du namespace, qui, auparavant, fonctionnait.
Pour bien poser le problème, je veux utiliser dans Objet une fonction de Namespace qui utilise Structure, elle même contenant une variable de type Objet. Je ne sais pas si ca pose problème, mais j'ai l'impression que ca vient - au moins en partie - de là.
Voici l'architecture du code:
Structure.hpp
Objet.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include "Objet.hpp" namespace Structure { struct Variables { (...) Objet objet; (...) //constructeur de la structure, avec initialisation de certaines variables Variables() { (...) } }; } //namespace Structure
Namespace.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //#include "Namespace.hpp" //c'est lorsque cette ligne est décommentée que le compilateur hurle class Objet : public Objetparent { (...) //des fonctions, des slots, des signaux, des variables membres };
Voilà pour le code, et donc quand je compile ca avec Qt Creator, sans même utiliser la fonction, uniquement en faisant le include, j'obtiens plein d'erreurs, notamment:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include "Structure.hpp" namespace General { namespace Transversaux { //fonction que je souhaite appeler dans Objet void fonction(Structure::Variables & datas, ...); } //namespace Transversaux } //namespace General
- 'Structure' has not been declared (à la ligne de la définition de la fonction dans le namespace, ligne 8 de Namespace.hpp)
- variable or field 'fonction' declared void (à la même ligne)
Je pense que le tout vient d'un problème de la structure, mais son .hpp est bien inclus, j'ai essayé également de rajouter dans Namespace.hpp, au tout début, struct Structure::Variables;, mais ca ne fonctionne quand même pas.
Une solution?
Partager