Re: Re:
- From: Culpian Camilo Martin <camiloculpian gmail com>
- To: Yann Leydier <yann leydier info>
- Cc: gtkmm-list gnome org
- Subject: Re: Re:
- Date: Fri, 28 Jan 2011 16:31:52 -0300
El vie, 28-01-2011 a las 15:29 +0100, Yann Leydier escribió:
> You can also use std::tr1::shared_ptr. This not (yet) standard C++ but
> is present in most compilers (gcc 4, visual studio 2008 and 2010…).
>
> When C++0x is released, you'll just have to replace "std::tr1" with "std::".
>
> yann
>
> On 28/01/11 15:19, Culpian Camilo Martin wrote:
> > El vie, 28-01-2011 a las 15:11 +0100, Krzesimir Nowak escribió:
> >> 2011/1/28 Culpian Camilo Martin<camiloculpian gmail com>:
> >>> El vie, 28-01-2011 a las 14:46 +0100, Krzesimir Nowak escribió:
> >>>> 2011/1/28 Culpian Camilo Martin<camiloculpian gmail com>:
> >>>>> ok, i'll try it, i have had some troubles doing this:
> >>>>>
> >>>>> class foo
> >>>>> {
> >>>>> static ref_ptr<foo> create
> >>>>> (
> >>>>> return ref_ptr<foo>(new foo());
> >>>>> );
> >>>>> foo();
> >>>>> ~foo();
> >>>>> ref_ptr<foo> set_something()
> >>>>> {
> >>>>> //set something
> >>>>>
> >>>>> return ref_ptr<foo>(this);
> >>>>> //for using foo->set_something()->set_something();
> >>>>> // oviously the ref_ptr delete "this", and cause a segfault
> >>>>> // any idea how can avoid this?
> >>>>> }
> >>>>> }
> >>>>
> >>>> Would be good to show what is this ref_ptr class...
> >>>>
> >>>> If the below code segfaults then maybe copy constructor of ref_ptr
> >>>> does not increment reference count.
> >>>>
> >>>> ref_ptr<foo> f = foo::create();
> >>>> f->set_something()->set_something();
> >>>
> >>> the problem is not when i do this:
> >>>
> >>> ref_ptr<foo> f = foo::create();
> >>> f->set_something()->set_something();
> >>>
> >>> the problem is when i do this:
> >>>
> >>> class foo_b : public foo
> >>> {
> >>> static ref_ptr<foo_b> create()
> >>> {
> >>> return ref_ptr<foo_b>(new foo_b());
> >>> }
> >>> foo_b();
> >>> ~foo_b();
> >>> }
> >>>
> >>> when i do:
> >>>
> >>> foo_b foob = foo_b::create();
> >>> foob->set_something(); //here ref_ptr delete the object member class
> >>> foo... this is what i can't do right.
> >>
> >> Now I see. An option would be:
> >> 1. returning void instead of ref_ptr to this.
> >> 2. coding the reference count inside foo_b, instead of in ref_ptr.
> >>
> >> I would opt for first solution.
> > yes, but if i extend from Glib::Object, and i use Glib::RefPtr, wouldn't
> > be a better and elegant solution? or it is not possible?
> >
> > _______________________________________________
> > gtkmm-list mailing list
> > gtkmm-list gnome org
> > http://mail.gnome.org/mailman/listinfo/gtkmm-list
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtkmm-list
Tanx for the help, but i want to know if it's posible doing it extendig
Glib::Object or Glib::ObjectBase in c++, seems much easier, if not
posible why?
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]