IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Surcharge des fonctions


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 64
    Points
    64
    Par défaut Surcharge des fonctions
    Bonjour ,
    je viens de demarrer dans le C++ , voila un code sur la surcharge des fonctions et je n'arrive pas a trouver l'erreur " sachant que ca fait 1 semaine que j'ai commencé le C++"

    MERCI

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #include <iostream>
    #include <conio.h>
     
    void test(int n=0,float x=2.5)
    {
         cout<<"Fonction N°1 : ";
         cout<<"n= "<<n<<" x = "<<x<<"\n";
    }
     
     
    void test(float x=4.1,int n=2)
    {
      cout<<"Fonction N°2 : ";
      cout<<"n= "<<n<<" x = "<<x<<"\n";
    }
    void main()
    {
         int i=5; float r=3.2;
         test(i,r); //fonction N1
         test(r,i); //fonction N2
         test(i);   //fonction N1
         test(r);   //fonction N2
     
         }

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Et en quoi il y a-t-il une erreur ?

    Il y a juste std::cout qui n'est pas qualifié, c'est ça ton problème ?
    Boost ftw

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    j'ai ajouté au code
    pour palier a ce problème , mais ça persiste

    18 C:\Users\Nas\Desktop\Projets\Exo 1.5\main.cpp `main' must return `int'
    C:\Users\Nas\Desktop\Projets\Exo 1.5\Makefile.win [Build Error] [main.o] Error 1

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nassu Voir le message
    18 C:\Users\Nas\Desktop\Projets\Exo 1.5\main.cpp `main' must return `int'
    Le compilateur te donne la réponse... La fonction main() doit retourner un entier, donc...

    1- tu la renommes en int main()
    2- tu mets un return 0; à la fin
    3- tout rentre dans l'ordre...

    Francois

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    cool , merci , donc le probleme été a la déclaration

    peux tu m'expliquer la différence en VOID MAIN et INT MAIN ?,
    " je suis un bleu en C++"

    Merci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    int f() indique que la fonction f() renvoit un int. C'est pour ça qu'il faut rajouter un return (par exemple return 0; veut dire qu'on renvoit l'entier zéro)
    void f() veut dire que la fonction f() ne renvoit rien, donc pas la peine de faire return
    Cependant la fonction main est un peu différente, car c'est le point d'entrée du programme.
    Le standard exige qu'un programme C++ renvoit une valeur (par exemple pour savoir si le déroulement du programme s'est bien passé), donc c'est pour ça qu'il faut que la fonction main() renvoit un int.
    C'est pourquoi la fonction void main() n'est pas légal en C++.
    Par convention la valeur zéro indique que le déroulement du programme s'est bien passé.

  7. #7
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par nassu Voir le message
    cool , merci , donc le probleme été a la déclaration

    peux tu m'expliquer la différence en VOID MAIN et INT MAIN ?,
    " je suis un bleu en C++"

    Merci
    Bonjour,

    Dans ce cas, je t'invites à prendre connaissance de la liste des cours C++ que l'on a sur Developpez. Tu pourras ainsi choisir celui qui te convient le mieux

    http://cpp.developpez.com/cours/

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 626
    Points : 30 684
    Points
    30 684
    Par défaut
    Salut,

    Il faut déjà bien comprendre que la surcharge de fonction ne fonctionne que si tu as un nombre différent ou des types différents d'arguments.

    Ainsi, une surcharge peut s'effectuer sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void foo()
    void foo(int)
    void foo(int, int)
    mais tu ne peux pas envisager de surcharger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void foo(int i=3, int j = 4)
    {
        /* ce qui doit être fait */
    }
    void foo(int i=5, int j = 6)
    car le nombre et le type des argument est identique.

    N'oublie pas que, si tu donne des valeurs par défaut pour les deux arguments (selon exemple), tu te retrouve en réalité avec la possibilité d'utiliser les prototypes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void foo() /* les deux valeurs par défaut sont utilisées */
    void foo(int i) /* la valeur par défaut de j est utilisée */
    void foo(int i, int j) /*aucune valeur par défaut n'est utilisée */
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Merci pour vos réponses , j'ai pu bien comprendre le premier code , mais quand je passe au second code je bloque , j'ai pris en compte ce que vous m'avez expliqué mais en vin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #include <iostream.h>
    #include <conio.h>
     
    using namespace std;
    void essai(float x,char c,int n=0)
    {
         cout<<""F1 : x = "<<x<<" c  = "<<c<<" n = "<<n<<"\n";
    }  
    void essai(float x,int n)
    {
         cout<<""F2 : x = "<<x<<" n = "<<n<<"\n";
    }
    int main()
    {
       char l='z';int u=4;float y=2.0;
       essai(y,l,u); //Fonction N1  
       essai(y,l);   //Fonction N1
       essai(y,u);   //Fonction N2
       essai(u,u);   //Fonction N2
       essai(u,l);   //Fonction N1
       essai(y,y,u);   //Fonction N1
       return 0;
       getch();
    }

  10. #10
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Pourquoi <iostream> s'est-il transformé en <iostream.h> ?
    Sinon tes erreurs de syntaxe sont évidentes, tu écris "" à la place de ". Même le syntax highlighter tout seul suffit à résoudre ce genre de problème.

    Lis les messages que te donne ton compilateur...
    Boost ftw

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 180
    Points : 64
    Points
    64
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #include <iostream>
    #include <conio.h>
     
    using namespace std;
    void essai(float x,char c,int n=0)
    {
         cout<<"F1 : x="<<x<<" c="<<c<<" n ="<<n<<"\n";
    }  
    void essai(float x,int n)
    {
         cout<<"F2 : x ="<<x<<" n ="<<n<<"\n";
    }
    int main()
    {
       char l='z';int u=4;float y=2.0;
       essai(y,l,u); //Fonction N1  
       essai(y,l);   //Fonction N1
       essai(y,u);   //Fonction N2
       essai(u,u);   //Fonction N2
       essai(u,l);   //Fonction N1
     
       system("PAUSE");
      return 0;
      }

    Parfait , voila le code , correcte MERCI POUR VOTRE AIDE

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Tu n'as pas besoin du header non-standard <conio.h> si tu n'utilises pas les fonctions non-standard qu'il déclare.

    Supprime donc son inclusion...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ambiguïté sur le surcharge des fonctions
    Par DLOYAS dans le forum C++
    Réponses: 1
    Dernier message: 08/01/2015, 09h35
  2. Surcharge des fonctions d'une classe (wrapping)
    Par RapotOR dans le forum C++
    Réponses: 3
    Dernier message: 23/10/2013, 17h43
  3. Surcharge des fonctions malloc et free
    Par Aspic dans le forum C
    Réponses: 7
    Dernier message: 22/04/2013, 13h52
  4. [MFC] Surcharger des fonctions de CView
    Par Philippe320 dans le forum MFC
    Réponses: 2
    Dernier message: 22/11/2005, 21h24
  5. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo