Функциональные адапторы: bind1st, mem_fun. Не компилирует.
От: baf  
Дата: 19.01.11 10:50
Оценка:
Не компилируется следующий код:

#include <iostream>
#include <functional>

using namespace std;

struct TestCont{
    void push_back(const string& str) const{
        cout << "TRATATATTATATATA & "<<str<<"!" << endl;
    }
    void push_front(const string& str) const{
        cout << str << " & TRATATATTATATATA!" << endl;
    }
};

TestCont cont();

int main(){
    bind1st( mem_fun(&TestCont::push_back), &cont );
}


Нужно "забиндить" функцию-член и конкретный объект и передать в некоторую функцию. Я пробовал использовать bind1st и mem_fun, но даже простейший код, приведённый выше, не компилируется. Помогите разобраться, что делаю не так.
Похожая проблема
Автор:
Дата: 05.11.04
, но эта тема, к сожалению, мне не помогла.
bind1st mem_fun функциональные адапторы функциональный адаптор
Re: Функциональные адапторы: bind1st, mem_fun. Не компилируе
От: Sergey Chadov Россия  
Дата: 19.01.11 11:22
Оценка:
Здравствуйте, baf, Вы писали:

baf>Нужно "забиндить" функцию-член и конкретный объект и передать в некоторую функцию. Я пробовал использовать bind1st и mem_fun, но даже простейший код, приведённый выше, не компилируется. Помогите разобраться, что делаю не так.

baf>Похожая проблема
Автор:
Дата: 05.11.04
, но эта тема, к сожалению, мне не помогла.


У стандартных bind1st и прочих есть проблема — они не умеют байндить функции с параметрами ссылками (у них унутре ссылка на ссылку появляется)
Поэтому либо передавать строки по значению со всеми вытекающими, либо буст.

    boost::bind(&TestCont::push_back, cont,_1);



Еще один косяк в коде

TestCont cont();


скобки лишние.
Re[2]: Функциональные адапторы: bind1st, mem_fun. Не компили
От: baf  
Дата: 19.01.11 12:02
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:
SC>У стандартных bind1st и прочих есть проблема — они не умеют байндить функции с параметрами ссылками (у них унутре ссылка на ссылку появляется)
SC>Поэтому либо передавать строки по значению со всеми вытекающими, либо буст.

SC>
SC>    boost::bind(&TestCont::push_back, cont,_1);
SC>



SC>Еще один косяк в коде


SC>
SC>TestCont cont();
SC>


SC>скобки лишние.


Спасибо! Теперь всё понятно.
Буду использовать boost::bind )
Re[3]: Функциональные адапторы: bind1st, mem_fun. Не компили
От: _nn_  
Дата: 19.01.11 16:23
Оценка:
Здравствуйте, baf, Вы писали:

baf>Спасибо! Теперь всё понятно.

baf>Буду использовать boost::bind )

Есть еще Boost.Functional который содержит те же методы, что и std, но с исправлениями.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.