Erreur undefined reference to 'ma_fonction(std::string*, int)' [Résolu/Fermé]

Signaler
Messages postés
128
Date d'inscription
mercredi 15 février 2012
Statut
Membre
Dernière intervention
27 mars 2016
-
Messages postés
128
Date d'inscription
mercredi 15 février 2012
Statut
Membre
Dernière intervention
27 mars 2016
-
Salut,
Je suis en train de faire un petit code en C++ et j'ai rencontrer un petit problème :
Quand je compile le code suivant, j'ai l'erreur suivante :
"undefined reference to 'ma_fonction(std::string*, int)' "

ma_fonction.h :
void ma_fonction(std::string recu[], int tailleRecu = 0); 

ma_fonction.cpp :
#include "ma_fonction.h" 
#include <windows.h> 
#include <string> 
#include <iostream> 

using namespace std; 

void ma_fonction(string recu[], int tailleRecu()) 
{ 
} 

et mon main.cpp :
#include <iostream> 
#include <windows.h> 
#include <string> 
#include "ma_fonction.h" 

using namespace std; 

int main() 
{ 
//reste du code 
ma_fonction(texte, taille); 
//reste du code 
} 


Je n'ai pas mis le code en entier mais la variable 'texte' est de type string et 'taille' de type int.
Quelqu'un saurait-il résoudre mon problème ? Merci d'avance. :)





Celui qui pose une question est bête cinq minute, celui qui n'en pose pas l'est toute sa vie.

1 réponse


Bonjour

dans ma_fonction.h :
void ma_fonction(std::string recu[], int tailleRecu = 0); 

dans ma_fonction.cpp :
void ma_fonction(string recu[], int tailleRecu())


Ton prototype dit que le deuxième paramètre est un entier, alors que dans la définition le second paramètre est une fonction (qui rend un entier)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 59499 internautes nous ont dit merci ce mois-ci

Messages postés
128
Date d'inscription
mercredi 15 février 2012
Statut
Membre
Dernière intervention
27 mars 2016
34
Alors dans le ma_fonction.cpp dois-je mettre :
void ma_fonction(string recu[], int tailleRecu = 0) 
Si c'est ça, ça ne marche toujours pas et ça me mets d'autre erreur.
Utilisateur anonyme
Ce n'est pas à moi de te dire ce que tu dois mettre : je te montre juste que ta déclaration et ta définition sont incohérents et que c'est pourquoi tu avais ce message.
Mais c'est à toi de savoir de quel paramètre tu as réellement besoin, je ne peux pas le deviner sans savoir à quoi sert ta fonction ni comment elle est écrite.
Pas plus que je ne peux te parler de ta nouvelle erreur : je n'ai pas une assez bonne vue pour lire ce qui s'affiche sur ton écran, et tu ne recopies pas le message d'erreur ici.
Messages postés
128
Date d'inscription
mercredi 15 février 2012
Statut
Membre
Dernière intervention
27 mars 2016
34
la première erreur :
ma_fonction.cpp: default argument given for parameter 2 of 'void ma_fonction(std::string*, int)' [-fpermissive]
et la deuxième :
ma_fonction.h: after previous specification in 'void ma_fonction(std::string*, int)' [-fpermissive]
Utilisateur anonyme
La première erreur vient du fait que la valeur par défaut (=0) ne doit être précisée que dans le prototype de la fonction et non dans la déclaration, comme il est expliqué ici
https://www.commentcamarche.net/contents/188-langage-c-les-fonctions
au paragraphe 'Valeur par défaut des arguments'
Je ne vois pas à quoi correspond le second message d'erreur, c'est peut-être une conséquence du premier
Messages postés
128
Date d'inscription
mercredi 15 février 2012
Statut
Membre
Dernière intervention
27 mars 2016
34
Super, ça marche lorsque j'enlève '=0' dans ma_fonction.cpp.
Merci beaucoup. :)