Salut les C++,
J'ai le problème suivant avec les paramètres par défaut dans les fichiers d'en tête que ce soit pour les fonctions ou pour les classes:
Je définis un fichier *.cpp
Puis un fichier d'en tête correspondant *.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include "my_func.h" void my_func(const std::string my_string, bool pb=false) { return ; }
Et écrit comme cela la compilation fonctionne parfaitement, seulement je ne peut pas appeler ma fonction comme ceçi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #ifdef __PB_DEFAULT_HH__ #define __PB_DEFAULT_HH__ #include <string> extern void my_func(const std::string my_string, bool pb) ; #endif
Le compilateur se plaint qu'il manque un argument a l'appel de la fonction my_func(...) ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "my_func.h" int main(int argc, char *argv[]) { my_func("my_string") ; return 0 ; }
Et c'est la même chose concernant les classes et leur constructeur(s).
Et je ne comprends pas pourquoi ???
---
Alors que si je fait ainsi:
et que j'inclus le fichier dans main et bien je peut appeler la fonction my_func(...) comme cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #ifdef __PB_DEFAULT_HH__ #define __PB_DEFAULT_HH__ #include <string> void my_func(const std::string my_string, bool pb=false) { return ; } #endif
Sans problème nie a la compilation nie a l'appel de la fonction...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "my_func.h" int main(int argc, char *argv[]) { my_func("my_string") ; return 0 ; }
Merci pour vos réponses éclairées et votre aide précieuse.
PS: connaissez vous l'extension *.inl car je l'ai rencontrer dans la glm qui par d'ailleurs n'a pas besoin d'être linker (le fichier *.so n'existe pas) ?
Partager