2009-11-11 4 views
6
class A 
{ 
    bool OutofRange(string& a, string& b, string c); 
    void Get(vector <string>& str, string& a, string& b); 
} 

void A::Get(vector <string>& str, string& a, string& b) 
{ 
    str.erase(
      std::remove_if (str.begin(), str.end(), BOOST_BIND(&A::OutOfRange, a, b, _1)), 
      str.end() 
      ); 
} 

Je reçois des erreurs telles que:boost d'erreur de compilation se lient

Error 7 error C2825: 'F': must be a class or namespace when followed by '::' File:bind.hpp 
Error 8 error C2039: 'result_type' : is not a member of '`global namespace'' t:\3rdparty\cpp\boost\boost-1.38.0\include\boost\bind.hpp 67 

Quelqu'un peut-il me dire ce que je fais mal?

+0

bind Poster un certain code réel. Par exemple. La définition de A :: Get() 'manque le type de retour. – dirkgently

+0

J'ai écrit mon code basé sur cette réponse ici ::: http://stackoverflow.com/questions/1677211/sort-using-boostbind/1677302#1677302 – aajkaltak

Répondre

14

A :: OutOfRange est fonction de 4 arguments - implicite * ce qui est le premier argument, ce qui manque dans votre clause

+0

Je ne pense pas qu'il me manque un argument dans la clause de liaison . J'ai écrit mon code basé sur cette réponse ici - http://stackoverflow.com/questions/1677211/sort-using-boostbind/1677302#1677302 mon code a fonctionné quand ces fonctions n'étaient pas des membres de la classe mais quand j'ai fait les membres de la classe, ils ne travaillaient plus! – aajkaltak

+3

Écoutez catwalk, il a raison. Vous avez besoin de quelque chose comme ceci: BOOST_BIND (& A :: OutOfRange, * ceci, a, b, _1) http://www.boost.org/doc/libs/1_40_0/libs/bind/bind.html#with_member_pointers – McBeth

+3

@McBeth: en fait c'est mieux: 'boost :: bind (& A :: OutOfRange, ceci, a, b, _1)'. Bind traite correctement les pointeurs, et d'un autre côté, il fait des copies des arguments. Dans le cas de passer un pointeur le pointeur est copié, si vous passez un objet réel, un autre objet sera créé et la copie sera utilisée dans le foncteur généré. –

Questions connexes