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

SL & STL C++ Discussion :

accumlate avec une fonction membre


Sujet :

SL & STL C++

  1. #1
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut accumlate avec une fonction membre
    Bonjour j'essai d'utiliser accumulate pour faire un somme en utilisant une fonction membre

    ce code marche
    Code C++ : 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #include <vector>
    #include <algorithm>
    #include <numeric>
    #include <functional>
    class Vehicule
    {
    public:
    	virtual int GetNbRoues() =0;
    	};
     
    class voiture : public Vehicule
    {
    public:
     
    	virtual int GetNbRoues() {return 4;};
    };
     
    class moto : public Vehicule
    {
    public:
    	virtual int GetNbRoues() {return 2;};
    };
     
     
     
     
    template<class T1, class T2>
    T1 & addNay2 (T1 &a,T2 &b){return a+=b->GetNbRoues();};
     
     
    int main(int argc, char* argv[])
    {
    	std::vector<Vehicule*> vect;
    	vect.push_back( new voiture);
    	vect.push_back(new voiture);
    	vect.push_back(new moto);
    	vect.push_back(new moto);
    	vect.push_back(new voiture);
    	vect.push_back(new moto);
    	vect.push_back(new moto);
    	vect.push_back(new voiture);
     
    int nb =std::accumulate(vect.begin(),vect.end(),0.f, std::ptr_fun(addNay2<float,Vehicule*>));
     
     
    	return 0;
    }

    mais j'aurais voulu eviter de faire un foncteur. Y as t'il un moyen?

  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
    Pour convertir une fonction membre en foncteur, c'est std::mem_fun(&Vehicule::GetNbRoues).

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Laurent Gomila
    Pour convertir une fonction membre en foncteur, c'est std::mem_fun(&Vehicule::GetNbRoues).
    le problème est que accumulate utilise un foncteur binaire qui prend en parametre l'element accumulé et l'objet courant. Donc cela ne suffit pas

Discussions similaires

  1. Thread avec une fonction membre d'une classe
    Par Krishna dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 14/07/2008, 23h43
  2. Réponses: 9
    Dernier message: 24/08/2007, 12h37
  3. accumlate avec une fonction membre 2
    Par yan dans le forum SL & STL
    Réponses: 23
    Dernier message: 23/08/2007, 23h09
  4. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15
  5. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22

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