|
Boost : |
From: Andy Little (andy_at_[hidden])
Date: 2004-10-08 05:39:16
"Jonathan Turkanis" <technews_at_[hidden]> wrote
> "Andy Little" <andy_at_[hidden]> wrote
> > Hi,
> >
> > Any interest in a shared_object?
>
> I have no idea what you mean, but I'll be posting something called
shared_object
> soon.
I guess what I am after is:
shared_object<T> my_obj; // Now my_obj refers to a T, which I can access
by reference.
//Various ctors:
shared_object<T1> my_obj1(a,b,c);
shared_object<T2> my_obj2 = my_obj1;
//assign
my_obj = my_obj1; // assume T is (say) a base of T1.
//compare etc
my_obj == my_obj1;
Reference gives a different guarantee than pointers. Ok Could still be cast
to a pointer but ....
T& x = my_obj(); // reference *feels* like more obvious semantics than
pointer.
x.do_it();
*Ideally* my_obj always holds something... never empty. That is I guess
problematic from the implementation viewpoint, as it may cause a large
number of allocations. However it makes the thing extremely simple to use.
Dont really want to have to do this all the time:
if( !my_obj.is_empty()){
my_obj().do_it();
}
OTOH maybe could do:
share_object<T> my_empty_obj(leave_empty());
// then make sure its not empty before going public...
As to implementation. Maybe slow.. maybe big, but typically what I would
want it for is for say switching views in a GUI app. Not critical on speed
or size. shared_object probably implements a garbage collector in fact.
> > In this case its the object that is shared, not the pointer....
> With shared_ptr, the object, not the pointer, is shared.
Aha ... descriptively named then... ;-)
regards
Andy Little
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk