[C++-sig] Call Policy Question
Mike Thompson
mike.spam.filter at day8.com.au
Thu Nov 4 08:17:45 CET 2004
I have a member function which returns an object and I'm trying to
define a call policy for that member function which will:
1. cause the returned object to be managed:
return_value_policy<manage_new_object>()
its a new object and needs to be managed.
2. register that the returned object holds a
reference to the originating object (but not visa-versa)
but I can't work out how to combine the two.
I need 1. above because the returned object is new and needs to be managed.
I need 2. above because this returned object has references BACK
to the object who's member function supplies it.
So the returned object can be destroyed without the original being
effected, but destruction of the original MUST wait until the returned
object is gone.
Some code which hopes to capture this ...
---------------------------------------------------------------------
class Orig;
class Fresh {
public:
Fresh(Orig* o) : o_(o) {}
Orig* o_;
};
class Orig {
public:
Fresh* newFresh() { return new Fresh(this); }
};
---------------------------------------------------------------------
class_<Orig>("Orig", no_init)
.def("newFresh", &Orig::newFresh, XXXXX)
;
---------------------------------------------------------------------
What should XXXXX be??
Help greatly appreciated. I can't work this out from the tutorial and
test harness code.
--
Mike
More information about the Cplusplus-sig
mailing list