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

Résolu
matmat42 Messages postés 138 Statut Membre -  
matmat42 Messages postés 138 Statut Membre -
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

  1. Utilisateur anonyme
     
    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
    1. matmat42 Messages postés 138 Statut Membre 40
       
      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
    2. 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.
      0
    3. matmat42 Messages postés 138 Statut Membre 40
       
      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
    4. 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
      0
    5. matmat42 Messages postés 138 Statut Membre 40
       
      Super, ça marche lorsque j'enlève '=0' dans ma_fonction.cpp.
      Merci beaucoup. :)
      0