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

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 ;
 
}
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
 
#ifdef __PB_DEFAULT_HH__
#define __PB_DEFAULT_HH__
 
#include <string>
 
extern void my_func(const std::string my_string, bool pb) ;
 
#endif
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
10
11
 
 
#include "my_func.h"
 
int main(int argc, char *argv[]) {
 
  my_func("my_string") ; 
 
  return 0 ;
 
}
Le compilateur se plaint qu'il manque un argument a l'appel de la fonction my_func(...) ???

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:

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
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
 
 
#include "my_func.h"
 
int main(int argc, char *argv[]) {
 
  my_func("my_string") ; 
 
  return 0 ;
 
}
Sans problème nie a la compilation nie a l'appel de la fonction...

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) ?