Mettre une valeur par défaut dans le fichier d'en-tête ?
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:
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:
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:
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:
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:
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) ?