Проблема с std::mem_fun
От: PM  
Дата: 01.08.03 12:26
Оценка:
Что-то торможу под конец дня. Есть такое:
class foo;
typedef boost::shared_ptr<foo> foo_ptr;

class bar;
typedef boost::shared_ptr<bar> bar_ptr;

class bar
{
public:
    void f(foo_ptr pfoo);
};

class foo
{
    vector<bar_ptr> bars_;
    void g()
    {
        for_each( bars_.begin(), bars_.end(),
                    bind2nd(
                        mem_fun<void, bar_ptr, foo_ptr>(&bar::f),
                        foo_ptr(this) 
                    )
                );
    }
};

Не компилируется — типы bar_ptr и bar для mem_fun не совпадают.

Пытаюсь сделать
        for_each( bars_.begin(), bars_.end(),
                    bind2nd(
                        mem_fun<void, bar, foo_ptr>(&bar::f),
                        foo_ptr(this) 
                    )
                );

Тоже не компилируется — теперь не совпадают типы аргументов для bind2nd.

Есть ли какое-то решение, кроме написания своего функтора?
Posted via RSDN NNTP Server 1.7 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.