Erreur undefined reference to 'ma_fonction(std::string*, int)'

Résolu/Fermé
matmat42 Messages postés 124 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 27 mars 2016 - Modifié par matmat42 le 22/03/2013 à 23:05
matmat42 Messages postés 124 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 27 mars 2016 - 22 mars 2013 à 23:56
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.
A voir également:

1 réponse

Utilisateur anonyme
22 mars 2013 à 23:23
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
matmat42 Messages postés 124 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 27 mars 2016 40
22 mars 2013 à 23:37
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.
0
Utilisateur anonyme
22 mars 2013 à 23:41
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.
0
matmat42 Messages postés 124 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 27 mars 2016 40
22 mars 2013 à 23:45
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]
0
Utilisateur anonyme
22 mars 2013 à 23:52
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
0
matmat42 Messages postés 124 Date d'inscription mercredi 15 février 2012 Statut Membre Dernière intervention 27 mars 2016 40
22 mars 2013 à 23:56
Super, ça marche lorsque j'enlève '=0' dans ma_fonction.cpp.
Merci beaucoup. :)
0