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 :

valeur par defaut d'un parametre d'une methode


Sujet :

C++

  1. #1
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut valeur par defaut d'un parametre d'une methode
    salut a tous,

    j'aimerai savoir s'il est possible d'affecter comme valeur par defaut à un parametre d'une methode d'une classe, un attribut de cette meme classe.
    ...je suis pas sur d'etre clair

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class maclasse {
    public:
    void mamethode (string = "");
    private:
    string mavar;
    };
    Ma question est : est-il possible de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void mamethode (string = "");
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void mamethode (string = mavar);
    ou bien dois-je laisser "" et mettre le code adequate (si parametre = "" alors utiliser mavar ) dans le corps de ma methode ?

  2. #2
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    essaye

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 104
    Points : 62
    Points
    62
    Par défaut
    ca serai simple d'utiliser mavar directement dans la fonction sans lui mettre comme parametre cadire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class maclasse { 
    public: 
    void mamethode ()
    {
    //j'utilise ici mavar sans la declarer
    } 
    private: 
    string mavar; 
    };

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 97
    Points : 91
    Points
    91
    Par défaut Re: valeur par defaut d'un parametre d'une methode
    Citation Envoyé par le y@m's
    salut a tous,
    ...je suis pas sur d'etre clair : ?
    c'est le seul point qui est clair lol
    je vois pas l'intérêt de faire ce que tu veux faire

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Citation Envoyé par jmv
    essaye
    c'est ce que j'ai fait mais un coup ça compile, un coup ça compile pas en disant
    invalid use of non-static data member 'maclass::mavar'
    (j'utilise devcpp).
    de par ce comportement j'aurais tendance a dire que ce n'est pas faisable mais je demande confirmation (ou bien si c'est faisable d'une autre façon).

  6. #6
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    le but est d'avoir une fonction qui prend un parametre non obligatoire, et dans le cas où il n'est pas renseigné, j'utilise la valeur stockée dans mavar.

    en gros, je veut une valeur par defaut qui ne soit pas toujours la meme (en fonction de l'execution du programme)

  7. #7
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    comme je ne connaissais pas la réponse, j'ai aussi essayé et appararement ça ne marche qu'avec les membres static (dev-C++ aussi)

    tu peux utiliser la surchare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class maclasse { 
    public: 
        void mamethode (string arg); // utilise arg 
        void mamethode ()  // utilise mavar
        {
            mamethode(mavar);
        }
    private: 
        string mavar; 
    };

  8. #8
    Membre régulier Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Points : 123
    Points
    123
    Par défaut
    pourquoi tu ne fais pas plutot ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void mamethode (string arg = mavar);
    [/code]

  9. #9
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    Citation Envoyé par hamster
    pourquoi tu ne fais pas plutot ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void mamethode (string arg = mavar);
    [/code]
    c'est justement la question de y@m's et apparament ça n'est pas faisable

  10. #10
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Citation Envoyé par hamster
    pourquoi tu ne fais pas plutot ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void mamethode (string arg = mavar);
    Citation Envoyé par le y@m's cad moi
    c'est ce que j'ai fait mais un coup ça compile, un coup ça compile pas en disant
    invalid use of non-static data member 'maclass::mavar'

    Citation Envoyé par jmv
    tu peux utiliser la surchare
    c'est aussi une solution mais dans ce cas autant tester le parametre et si ="" alors utiliser mavar.

  11. #11
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Effectivement ce n'est pas possible d'avoir une donnée membre non statique, étant donné que les paramètres par défaut sont résolus à la compilation. La meilleure solution je pense est d'utiliser la surcharge de fonction. Tu peux aussi passer une chaîne vide par défaut, et faire un test dans ta fonction, mais c'est moins propre.

  12. #12
    Membre régulier Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Points : 123
    Points
    123
    Par défaut
    j'ai essayé ça et ça marche nickel :

    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
    #include <iostream>
    #include <string>
     
    std::string MonSlip = "DIM";
     
    void fonction (std::string S = MonSlip)
    {
    	std::cout << S << std::endl;
    }
     
    int main()
    {
    	std::string Culotte = "Culotte_en_dentelle";
     
    	fonction(Culotte);
    	fonction();
     
    	return 0;
    }
    c'est pas ce que vous essayiez de faire ??

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Non, il voulait utiliser une donnée membre comme paramètre par défaut, pas une variable globale.

  14. #14
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    Citation Envoyé par hamster
    c'est pas ce que vous essayiez de faire ??
    oui sauf que y@m's veut faire ça avec un membre non-static de classe, et la ça coince

    toi tu l'a fait avec une variable globabes, un membre static peut être considéré comme une variable globale accessible uniquement de la classe.
    [edit] arf loulou24 m'a devancé [/edit]

  15. #15
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    a tous

    Citation Envoyé par Loulou24
    La meilleure solution je pense est d'utiliser la surcharge de fonction. Tu peux aussi passer une chaîne vide par défaut, et faire un test dans ta fonction, mais c'est moins propre.
    si la surcharge est la solution la plus propre, qu'en est-il de la solution la plus performante ? (je sais je chippote)

  16. #16
    Membre régulier Avatar de hamster
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 137
    Points : 123
    Points
    123
    Par défaut
    mea culpa !

    mais en tout cas c'est bon à savoir !

  17. #17
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Citation Envoyé par le y@m's
    Si la surcharge est la solution la plus propre, qu'en est-il de la solution la plus performante ? (je sais je chippote)
    Avec la surcharge, pas besoin de faire de test dans la fonction.

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

Discussions similaires

  1. Valeur par defaut d'une liste deroulante
    Par jpdar dans le forum IHM
    Réponses: 20
    Dernier message: 10/06/2016, 16h02
  2. Réponses: 0
    Dernier message: 02/04/2013, 11h23
  3. valeur par defaut d'un champ dans une table
    Par jjacques68 dans le forum Access
    Réponses: 3
    Dernier message: 24/10/2012, 09h59
  4. valeur par defaut d'un parametre de type date
    Par h_a_m_a_d_a dans le forum BIRT
    Réponses: 8
    Dernier message: 23/02/2007, 11h43
  5. donner une valeur par defaut à un champ file
    Par Davboc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 24/02/2006, 11h26

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