on Wed Feb 04 2009, Paul Melis <pyplusplus-AT-assumetheposition.nl> wrote:
> Hello,
>
> Classes with protected destructors (as found when custom reference
> counting is used) seem to cause some trouble when using bp::wrapper<>
> containing a method that takes a const reference to a refcounted class.
>
> struct CallbackWrap : Callback, bp::wrapper<Callback>
> {
> void execute(const Thing& t)
> {
> if (bp::override ovr = this->get_override("execute"))
> {
> fprintf(stderr, "have override, calling...\n");
> ovr(t);
^^^^^^
The problem is here, right?
If you want to pass an object by reference to a python function, you
have to wrap it in boost::ref(). Otherwise, it will try to copy the
object and the resulting copy will have to be destroyed after the call.
> fprintf(stderr, "done calling\n");
> }
> else
> Callback::execute(t);
> }
>
> void default_execute(const Thing& t)
> {
> fprintf(stderr, "default\n");
> this->Callback::execute(t);
> }
> };
--
Dave Abrahams
BoostPro Computing
http://www.boostpro.com
_______________________________________________
Cplusplus-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/cplusplus-sig