Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > mem_fun_ref


Автор: xTr1m 2.6.2010, 11:13
Доброго времен суток.Изучая этого замечательного зверя, появились вопросы. Вот так все ок (ну собственно не удивительно):
Код

class Test
{
public:
    Test(const string &name) : m_name(name) {};
    void Print() { cout<<m_name; };

private:
    string m_name;
};

void main()
{
    vector<Test> items;
    items.push_back(Test("1"));
    items.push_back(Test("2"));
    
    for_each(items.begin(), items.end(), mem_fun_ref(&Test::Print));
    
    _getch();
    return;
}



а если я хочу, что функция Print принимала что-нибудь в качестве параметра. Например вот так:
Код

class Test
{
public:
    Test(const string &name) : m_name(name) {};
    void Print(char separator) { cout<<m_name+separator; };

private:
    string m_name;
};


void main()
{
    vector<Test> items;
    items.push_back(Test("1"));
    items.push_back(Test("2"));
    
    for_each(items.begin(), items.end(), mem_fun_ref(&Test::Print(' ')));
    
    _getch();

    return;
}

Так не компилится. Есть ли способ реализовать мое желание?

Автор: Abyx 2.6.2010, 11:14
xTr1m, mem_fun_ref отменили (сделали deprecated) в C++0x, по этому ее лучше не использовать
используйте boost::bind (он же std::tr1::bind)

Автор: xTr1m 2.6.2010, 11:26
Спасибо за предупреждение =)) Буду читать про bind.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)