Re[3]: boost::bind использование в классе
От: maxman20  
Дата: 14.02.11 08:37
Оценка:
Здравствуйте, st0nx, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, st0nx



S>>> if(std::find_if(cookie.begin(),cookie.end(),(boost::bind(&HttpSendRecv_boost::findvector,_1,_2,_3,buf))) == cookie.end())

S>>> {
S>>> cookie.push_back(buf);
S>>> }

А>>Попробуйте так:


А>>if(std::find_if(cookie.begin(),cookie.end(),(boost::bind(&HttpSendRecv_boost::findvector,this,buf,_1))) == cookie.end())

А>>{
А>> cookie.push_back(buf);
А>>}

S>Спасибо все получилось! А не могли бы вы рассказать почему именно так?


В алгоритм std::find_if нужно передать функтор который должен принимать один параметр: stringdouble,

а функция findvector, является членом класса, следовательно неявно принимает еще и указатель на объект this.

вот и получается: bind(&HttpSendRecv_boost::findvector, this, buf, _1)(stringdouble)

&HttpSendRecv_boost::findvector: указатель на функцию
this — указатель на объект класса, в котором эта функция
buf — первый аргумент
_1 — то что очталось
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.