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 :

for_each + boost::bind = crash ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut for_each + boost::bind = crash ?
    Bonjour a tous,

    Je souhaite iterer sur une collection (j'utilise donc for_each) et pour chaque element, je souhaite appeler une fonction membre d'une classe quelconque. Par exemple :
    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
    class E {
    public:
    	void print(const std::string& str) {
    		cout << str << endl;
    	}	
    };
     
    void test_stl() {
    	vector<string> strings;
    	fill_n(back_inserter(strings), 10, "abcd");
    	fill_n(back_inserter(strings), 12, "hjk");
    	random_shuffle(strings.begin(), strings.end());
     
    	E e;
    	for_each(strings.begin(), strings.end(), boost::bind(&E::print, e));
    }
    Ici, je compte utiliser la classe E pour afficher les chaines (c'est un exemple basique on est d'accord, car je ne ferai pas comme ça s'il ne s'agissait que de faire cela). Le probleme, c'est que VS2005 (quel merveilleux compilateur celui-la) me crashe a la figure en me disant que le compilateur d'optimisation a plante' (mumph...). Voici le message d'erreur :
    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
    c:\include\boost\bind.hpp(1575) : warning C4180: qualificateur appliqué au type fonction n'a pas de sens ; ignoré
            c:\include\boost\bind.hpp(1609) : voir la référence à l'instanciation de la classe modèle 'boost::_bi::add_cref<Pm,I>' en cours de compilation
            with
            [
                Pm=void (__thiscall E::* )(const std::string &),
                I=1
            ]
            **************\langagetest.cpp(424) : voir la référence à l'instanciation de la classe modèle 'boost::_bi::dm_result<Pm,A1>' en cours de compilation
            with
            [
                Pm=void (__thiscall E::* )(const std::string &),
                A1=E
            ]
    c:\include\boost\mem_fn.hpp(318) : warning C4180: qualificateur appliqué au type fonction n'a pas de sens ; ignoré
            c:\include\boost\bind\bind_template.hpp(225) : voir la référence à l'instanciation de la classe modèle 'boost::_mfi::dm<R,T>' en cours de compilation
            with
            [
                R=void (const std::string &),
                T=E
            ]
    Projet : error PRJ0002 : Résultat d'erreur 1 retourné à partir de 'C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl.exe'.
    Quelqu'un sait-il pourquoi VS crashe lamentablement ? Ma version de boost est la 1.34.1.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Il manque un _1 à vue de nez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boost::bind(&E::print, e, _1)
    MAT.

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Je dirai pareil !

  4. #4
    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
    Par défaut
    Il ne s'agit pas d'un crash mais d'une erreur de compilation.
    Cela n'a rien à voir.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Il ne s'agit pas d'un crash mais d'une erreur de compilation.
    Cela n'a rien à voir.
    En fait si étonnamment, dans ce cas il s'agit bien du compilateur qui plante lamentablement.
    On peut même envoyer un rapport d'erreur à Microsoft, ce que je ne me prive jamais de faire systématiquement

    MAT.

  6. #6
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    avec bind, le compilo devient vite fou quand on se plante !

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

Discussions similaires

  1. utilisation correct de boost:bind et result_of
    Par guillaume07 dans le forum Boost
    Réponses: 3
    Dernier message: 02/11/2009, 15h13
  2. boost::bind et membre de classe
    Par Trunks dans le forum Boost
    Réponses: 2
    Dernier message: 20/10/2009, 08h58
  3. Télécharger et installer boost::bind
    Par Electroniktor dans le forum Boost
    Réponses: 6
    Dernier message: 16/06/2008, 13h08
  4. Utilité de boost::bind ?
    Par swirtel dans le forum Boost
    Réponses: 5
    Dernier message: 07/09/2007, 16h27
  5. [Boost::bind] Cdecl / Callback
    Par superspag dans le forum Boost
    Réponses: 10
    Dernier message: 18/06/2007, 21h32

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