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 :

Arguments variable et factorisation


Sujet :

C++

  1. #1
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut Arguments variable et factorisation
    Hello !

    Une classe me pose quelques problèmes de duplication de code: la logique et la même dans les deux versions de fonctions mais a cause d'arguments supplémentaires je n'arrive pas a abstraire. Je connais un peut les variadic template, mais la je sèche ! Peut-être pourriez-vous m'aider a factoriser ?

    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
    26
    27
    28
      template<typename Generator, typename Tree>
      forest_type<Tree> coalescence_process(forest_type<Tree> forest, history_type const& history, Generator& gen)
      {
        auto t = history.last_time();
        while( (forest.nb_trees() > 1) && (t > history.first_time()) )
        {
          coalesce(forest, t, gen); // <---- attention ca va changer dans la seconde version
          simulate_backward_migration(forest, t, gen);
          --t;
        }
        coalesce(forest, t, gen); // <---- attention ca va changer dans la seconde version
        return forest;
      }
     
      template<typename Generator, typename F, typename Tree>
      forest_type<Tree> coalescence_process(forest_type<Tree> forest, history_type const& history, F binary_op, Generator& gen)
      {
        auto t = history.last_time();
     
        while( (forest.nb_trees() > 1) && (t > history.first_time()) )
        {
          coalesce(forest, t, binary_op, gen);  // <----et voila, un petit opérateur qui met le bazar
          simulate_backward_migration(forest, t, gen);
          --t;
        }
        coalesce(forest, t, binary_op, gen); // <----et voila, un petit opérateur qui met le bazar
        return forest;
      }
    En vous remerciant,

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Salut,

    Je mettrais un opérateur binaire par défaut quitte à ce qu'il soit factice (il ne modifierai pas les valeurs):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     template<typename Generator, typename F, typename Tree>
      forest_type<Tree> coalescence_process(forest_type<Tree> forest, history_type const& history, Generator& gen, F binary_op = FacticeBinaryOp())
      {
        auto t = history.last_time();
     
        while( (forest.nb_trees() > 1) && (t > history.first_time()) )
        {
          coalesce(forest, t, gen, binary_op); 
          simulate_backward_migration(forest, t, gen);
          --t;
        }
        coalesce(forest, t, gen, binary_op);
        return forest;
      }

  3. #3
    Membre averti Avatar de Seabirds
    Homme Profil pro
    Post-doctoral fellow
    Inscrit en
    Avril 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Post-doctoral fellow
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2015
    Messages : 294
    Points : 341
    Points
    341
    Par défaut
    L'argument par défaut ... Je n'y avait absolument pas pensé
    Merci !!!

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

Discussions similaires

  1. méthodes avec nombres d'arguments variable
    Par spynux dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2006, 13h51
  2. [variadic] passer un objet en argument variable
    Par Spartan03 dans le forum C++
    Réponses: 3
    Dernier message: 30/04/2006, 11h31
  3. Réponses: 4
    Dernier message: 31/10/2005, 17h48
  4. Macros et nombre d'arguments variable
    Par kaisse dans le forum C
    Réponses: 7
    Dernier message: 28/07/2005, 10h10
  5. Nombre d'arguments variable
    Par gege2061 dans le forum C
    Réponses: 7
    Dernier message: 05/08/2004, 15h43

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