Boost logo

Boost Users :

From: Michael Bradley Jr (mbradley.jr_at_[hidden])
Date: 2008-06-02 09:44:31


Hi,

i'm facing this problem may be someone on the list do have an elegant solution

class A;
class B;

class C {
int operator () (A*,B*)
};

typedef int (*foobar)(A*,B*);
void do_something(foobar cb);

C obj;
do_something(obj); *ERROR*

did try boost::function<int(A*,B*)> ftor = obj;
do_something(ftor); *ERROR*

compiler generates in both cases the following error messages
cannot convert parameter 2 from 'boost::function<Signature>' to 'int (__cdecl
*)(A *,B *)'

  with
1> [
1> Signature=int (A *, B *)
1> ]
1> No user-defined-conversion operator available that can perform this
conversion, or the operator cannot be called

I can't make the corresponding class B member function static due to side-effects.
Any clue how to get rid of this?

Thanks in advance
Mike


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