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

Boost C++ Discussion :

probleme avec for_each


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Par défaut probleme avec for_each
    bonjour,

    j' ai un probleme avec for_each ou peu etre pas?

    voici mon code

    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
     
     
    bool          parse_page::regex_callback(const boost::match_results<std::string::const_iterator>& what)
    {
      this->a++;
      cout << what[0] << endl;
      cout << what[1] << endl;
      cout << what[2] << endl;
      return true;
    }
     
    void          parse_page::find_url(string page)
    {
      boost::regex expression("<a href=\"(/|\\./|\\.)?([^\"]*)\"");
      boost::sregex_iterator m1(page.begin(), page.end(), expression);
      boost::sregex_iterator m2;
      for_each(m1, m2, &parse_page::regex_callback);
      cout << "nb_link; " << a << endl;
    }
    et voici l erreur de compilation qui pose probleme



    g++ parse_page.cpp wgetter.cpp main.cpp -lboost_regex -lboost_system -lpthread
    /usr/include/c++/4.3/bits/stl_algo.h: In function ‘_Funct std::for_each(_IIter, _IIter, _Funct) [with _IIter = boost::regex_iterator<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >, _Funct = bool (parse_page::*)(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&)]’:
    parse_page.cpp:25: instantiated from here
    /usr/include/c++/4.3/bits/stl_algo.h:3791: error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘__f (...)’
    make: *** [all] Erreur 1
    comprend pas besoin d aide

    j ai essayer en suivant le tuto http://r0d.developpez.com/articles/algos-stl/#LI-C

    mais ca veu toujour pas avez vous des idee a ce sujet?

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Ton problème est dans le foncteur du for_each:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     for_each(m1, m2, &parse_page::regex_callback);
    Pour une fonction membre, passe par un bind pour créé un foncteur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     for_each(m1, m2,boost::bind(&parse_page::regex_callback,_1));

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Par défaut
    merci de votre reponse

    mais ca ne fonctionne toujour pas

    g++ parse_page.cpp wgetter.cpp main.cpp -lboost_regex -lboost_system -lpthread -lboost
    /usr/include/boost/mem_fn.hpp: In member function ‘const R& boost::_mfi::dm<R, T>::call(U&, const void*) const [with U = const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, R = bool ()(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&), T = parse_page]’:
    /usr/include/boost/mem_fn.hpp:352: instantiated from ‘const R& boost::_mfi::dm<R, T>::operator()(const U&) const [with U = boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, R = bool ()(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&), T = parse_page]’
    /usr/include/boost/bind.hpp:222: instantiated from ‘R boost::_bi::list1<A1>::operator()(boost::_bi::type<R>, F&, A&, long int) [with R = bool (&)(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&), F = boost::_mfi::dm<bool ()(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&), parse_page>, A = boost::_bi::list1<const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&>, A1 = boost::arg<1>]’
    /usr/include/boost/bind/bind_template.hpp:47: instantiated from ‘typename boost::_bi::result_traits<R, F>::type boost::_bi::bind_t<R, F, L>::operator()(const A1&) [with A1 = boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >, R = bool (&)(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&), F = boost::_mfi::dm<bool ()(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&), parse_page>, L = boost::_bi::list1<boost::arg<1> >]’
    /usr/include/c++/4.3/bits/stl_algo.h:3791: instantiated from ‘_Funct std::for_each(_IIter, _IIter, _Funct) [with _IIter = boost::regex_iterator<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >, _Funct = boost::_bi::bind_t<bool (&)(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&), boost::_mfi::dm<bool ()(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&), parse_page>, boost::_bi::list1<boost::arg<1> > >]’
    parse_page.cpp:26: instantiated from here
    /usr/include/boost/mem_fn.hpp:333: error: no matching function for call to ‘get_pointer(const boost::match_results<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&)’

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    (Décidément, je suis fatigué ce matin).
    C'est plutôt quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for_each(m1, m2,boost::bind(&parse_page::regex_callback,this,_1));

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Par défaut
    merci

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

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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