boost:bind разная сигнатура
От: ZiloT  
Дата: 13.02.08 07:15
Оценка:
Допустим есть некий функциональный объект:


template <class item_type, class _Pred>
class Filler : public std::unary_function<const item_type*, void>
{
public:

        Filler(_Pred _pred)
        : m_Pred(_pred)
    {}

    void operator()(const item_type* pObj) const
    {
        CString sName;

        m_Pred(sName);
                
                // bla-bla
    }

protected:

    _Pred& m_Pred;
};


И его использование:



typedef boost::function<void (CString&)> TFunc;

std::for_each(objs.begin(), objs.end(), Filler<Object, TFunc>(boost::bind(&Object::GetFullName, _1, boost::ref(_2), (int*)NULL)));


В "objs" сидят Object* .

Хочется как-нить пропихнуть в качестве предиката в Filler функцию Object::GetFullName
Проблема в том, что GetFullName имеет несколько отличную сигнатуру, а именно

bool Object::GetFullName(CString& buf, int* pValue = NULL) const {}


Как сие провернуть, господа?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.