Boost logo

Boost :

From: Steven Watanabe (steven_at_[hidden])
Date: 2007-03-06 18:27:23


AMDG

Jason Turner <lefticus <at> gmail.com> writes:

> <snip>
>
> Similarly an active_object exists which creates a message thread for
> an object and serializes all calls to the object:
>
> The syntax for using an active_object is a little sloppy and I am not
> sure I am 100% pleased with it:
>
> active_object::active_object<TestClass> ao(new TestClass());
>
> active_object::active_return<int> ar = ao << boost::function1<int,
> TestClass *>(&TestClass::getInt);
> int v = ar.value();
>
> <snip>

You should not store a pointer you should store
a value. If users need a pointer then they
can specify it explicitly.

  active_object::active_object<TestClass> ao;

The << operator is not appropriate. A function is better

  ao.execute(boost::function1<int,TestClass *>(&TestClass::getInt));

You could use operator() but that might still be
confusing.

  ao(boost::function1<int,TestClass *>(&TestClass::getInt));

Ideally you want

  a0->getInt();

But this is not possible. Another possibility is

  (ao->*&TestClass::getInt)();

In Christ,
Steven Watanabe


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk