Problème d'inclusions fichier inl
Bonsoir 8-),
J'ai actuellement un petit problème, si quelqu'un aurait la solution je lui serait très reconnaissant. Pour faire simple, j'ai trois classes templates, donc je définit les fonctions dans un fichier inl, il y a donc en tout 6 fichiers, qui sont placés dans un dossier, que je vais nommer Sousdossier. Voici l'ordre des choses :
Code:
1 2 3 4 5 6 7 8 9 10 11
| // Sousdossier/A.hpp
template <typename T>
class A
{
// Fonctions
};
#include "Sousdossier/A.inl"
// Fonctions non-membres |
Code:
1 2 3
| // Sousdossier/A.inl
// Définitions des fonctions |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| // Sousdossier/B.hpp
#include "Sousdossier/A.hpp" // B utilise A
template <typename T>
class B
{
// Fonctions
};
#include "Sousdossier/B.inl"
// Fonctions non membres |
Code:
1 2 3
| // Sousdossier/B.inl
// Définition des fonctions |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| // Sousdossier/C.hpp
#include "Sousdossier/B.hpp" // Inclu donc aussi Sousdossier/A.hpp
template <typename T>
class C
{
// Fonctions
};
#include "Sousdossier/C.inl"
// Fonctions non membres |
Code:
1 2 3 4
|
// Sousdossier/C.inl
// Définition des fonctions |
Jusque ici, tout fonctionne bien, je peux utiliser n'importe laquelle des trois classes sans soucis. Maintenant, j'ai une autre classe, qui utilise la classe A, mais cette nouvelle classe n'est pas un modèle, j'ai donc un fichier hpp et un fichier cpp.
Or, dès que j'inclu le fichier de A :
#include "Sousdossier/A.hpp"
Le compilateur me sort une erreur "Impossible d'ouvrir le fichier d'include, no such file or directory." Pourtant le fichier existe bien, puisqu'il ne me sort pas d'erreur quand je fais #include "Sousdossier/A.hpp" dans "Sousdossier/B.hpp". Je précise que cette nouvelle classe se trouve aussi dans le dossier Sousdossier (soit "Sousdossier/D.hpp", sauf que cette classe dispose d'un fichier d'implémentation cpp.)
La seule solution que j'ai, c'est de supprimer le Sousdossier dans la classe D, ainsi :
// Sousdossier/D.hpp
#include "A.hpp";
A ce moment là, le compilo râle encore et va cette fois-ci dans le fichier "Sousdossier/A.hpp" pour me dire : "Impossible d'ouvrir le fichier d'include, no such file or directory", à propos de "Sousdossier/A.inl" (bref, le fichier d'implémentation de A qui fonctionnait très bien avant). La seule solution, supprimer le "Sousdossier" dans le fichier "Sousdossier/A.hpp".
Et là, ça marche. Seulement, c'est un peu génant, car maintneant, on ne sait plus que le fichier A.inl est dans le dossier "Sousdossier".
J'espère que j'ai été assez clair :).