2009-11-11 23 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() 
      ); 
} 

sto ottenendo gli errori come:spinta errore di compilazione si legano

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 

Qualcuno può dirmi che cosa sto facendo male?

+0

postale del codice vero e proprio. Per esempio. La definizione 'A :: Get()' manca del tipo restituito. – dirkgently

+0

Ho scritto il mio codice basandomi su questa risposta qui ::: http://stackoverflow.com/questions/1677211/sort-using-boostbind/1677302#1677302 – aajkaltak

risposta

14

A :: OutOfRange è una funzione di 4 argomenti - implicita * essendo questo il primo argomento, che manca nella vostra clausola legano

+0

non penso che manchi alcun argomento nella clausola di binding . Ho scritto il mio codice in base a questa risposta qui: http://stackoverflow.com/questions/1677211/sort-using-boostbind/1677302#1677302 il mio codice ha funzionato quando quelle funzioni non erano membri della classe ma quando ho fatto loro membri della classe, non hanno più lavorato! – aajkaltak

+3

Ascolta in passerella, ha ragione. Hai bisogno di qualcosa del genere: BOOST_BIND (& A :: OutOfRange, * this, a, b, _1) http://www.boost.org/doc/libs/1_40_0/libs/bind/bind.html#with_member_pointers – McBeth

+3

@McBeth: in effetti è meglio: 'boost :: bind (& A :: OutOfRange, this, a, b, _1)'. Bind si occupa correttamente dei puntatori lì, e d'altra parte fa copie degli argomenti. Nel caso di passaggio di un puntatore il puntatore viene copiato, se si passa un oggetto reale verrà creato un altro oggetto e la copia verrà utilizzata nel functor generato. –

Problemi correlati