Boost logo

Boost Users :

From: Okko Willeboordse (trash_at_[hidden])
Date: 2005-08-29 15:08:01


I have a class that has a constructor that takes a Boost function object wrapper;

class some_class
{
public:
    some_class(const boost::function1<wchar_t*, short*>& some_member)
....

I call the constructor with a member function using Boost bind.

    some_class some_object(boost::bind(&some_other_class::some_member,
                                       &some_other_object,
                                       _1));

Now I want to use some_class for some_member functions that return an other type
pointer.

So I do

class some_class
{
public:
    template <class T>
    some_class(const boost::function1<T*, short*>& get_member)
....

But now the compiler (VS 2003) starts complaining;

error C2664: 'some_class::some_class(const some_class &)' : cannot convert
parameter 1 from 'boost::_bi::bind_t<R,F,L>' to 'const some_class &'
        with
        [
            R=wchar_t *,
            F=boost::_mfi::mf1<wchar_t *,some_other_class,short *>,
            L=boost::_bi::list2<boost::_bi::list_av_2<some_other_class *__w64
,boost::arg<1>>::B1,boost::_bi::list_av_2<some_other_class *__w64
,boost::arg<1>>::B2>
        ]
        Reason: cannot convert from 'boost::_bi::bind_t<R,F,L>' to 'const
some_class'
        with
        [
            R=wchar_t *,
            F=boost::_mfi::mf1<wchar_t *,some_other_class,short *>,
            L=boost::_bi::list2<boost::_bi::list_av_2<some_other_class *__w64
,boost::arg<1>>::B1,boost::_bi::list_av_2<some_other_class *__w64
,boost::arg<1>>::B2>
        ]
        No constructor could take the source type, or constructor overload
resolution was ambiguous

Any ideas?

Many thanks,

Okko Willeboordse


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net