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 :

Equivalent C++ des fonctions à nombre variable de paramètres


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 68
    Points : 52
    Points
    52
    Par défaut Equivalent C++ des fonctions à nombre variable de paramètres
    Bonjour,

    Il me semble avoir lu quelque part qu'en C++, le principe de fonctions à nombre variable de paramètres était remplacé par autre chose (un peu comme les foncteurs pour les pointeurs de fonctions). Je n'arrive plus du tout à me souvenir quel était cet autre chose, ni même si c'était bien de ça qu'il s'agissait ou si ma mémoire me joue des tours.... Cela vous dit-il quelque chose ?

    Merci d'avance

  2. #2
    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
    En général on remplace ça par un chaînage d'appels, souvent à des opérateurs surchargés.

    Quelques exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cout << "salut, j'ai " << 20 << " ans";
     
    polygon.add(0, 1).add(5, 24).add(6, 89);
     
    log("erreur de lecture sur le fichier ")(filename).level(CRITICAL).throw();
    Après on peut imaginer tout un tas de trucs jolis ou pratiques plus appropriés au contexte.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 68
    Points : 52
    Points
    52
    Par défaut
    Yesss c'était ça ! Merci Loulou

    Je met le post en délestage mais ça m'a bien dépanné

  4. #4
    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
    Citation Envoyé par :Bronsky:
    Je met le post en délestage mais ça m'a bien dépanné
    Balise "Délestage" enlevée, ça peut servir à d'autres ou pour la FAQ .

  5. #5
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Petite déviation du sujet mais je veux pas créer un post juste pour ma curiosité. Alors comment sont créées les fonction printf() en C? vu que l'on peut mettre un nombre de paramètres différent dans ces fonctions, comment sont-elles définit?

  6. #6
    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

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 79
    Points
    79
    Par défaut
    desole mais j'ai pas tout compris , dans l'autre post il y est montre que les appels de fonctions.... du coup je ne sais ni coment les declarer ni comment les appeller puisque je ne comprends pas a quoi cela correspond : .
    merci

  8. #8
    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
    Tu parles de l'exemple de la FAQ ? Qu'est-ce que tu ne comprends pas exactement ?

  9. #9
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Points : 79
    Points
    79
    Par défaut
    non, en fait je me suis trompe de post. mais la question etait la meme alors...
    en fait ce que ej comprend pas c'est comment sont defini les fonctions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    cout << "salut, j'ai " << 20 << " ans"; 
     
    polygon.add(0, 1).add(5, 24).add(6, 89); 
     
    log("erreur de lecture sur le fichier ")(filename).level(CRITICAL).throw();
    et comment recupere t'on les differents parametres.
    merci[/code]

  10. #10
    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
    Il s'agit simplement de surcharger le bon opérateur (ou d'écrire la bonne fonction membre) et de lui faire renvoyer une référence sur l'instance courante, histoire de pouvoir enchaîner avec un nouvel appel.

    Par exemple pour les polygones :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Polygone
    {
    public :
     
        Polygon& add(int x, int y)
        {
            points.push_back(Point(x, y)); // par exemple...
     
            return *this;
        }
    };
    Pour cout c'est pareil, il suffit de définir la surcharge de << correspondant à ton type et de lui faire renvoyer le flux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    std::ostream& operator <<(std::ostream& os, const MaClasse& m)
    {
        os << m.donnee1 << " " << m.donnee2;
     
        return os;
    }
    Voir http://c.developpez.com/faq/cpp/?pag...ERENCE_fct_fct

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

Discussions similaires

  1. AS3 fonction nombre variable de paramètres
    Par Goldocrack dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 20/08/2011, 00h54
  2. Réponses: 5
    Dernier message: 11/08/2011, 14h12
  3. Entourer (wrap) des fonctions à nombre d'arguments variable
    Par phildepantin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2010, 08h30
  4. [T-SQL] Procédure à nombre variable de paramètres ?
    Par NeoMan dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 28/12/2005, 15h07
  5. Nombre variable de paramètres
    Par rolkA dans le forum C++
    Réponses: 12
    Dernier message: 10/10/2004, 15h44

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