RE:Re: memfunc template

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Wed Feb 09 2000 - 22:29:42 MET


Hello George,

Since I do not have the latest g++, I have some basic questions.

I thought auto_ptr<B> is a smart pointer 'B*' and auto_ptr<B*> is
a smart pointer 'B**'. Is this your intention? 

    class auto_ptr<B> {
     B* ptr;
     bool owns;
     ...
    };

    class auto_ptr<B*> {
     B** ptr;
     bool owns;
    };


Second, will you explain how 'new X' is implicitly converted to
auto_ptr<Base1*>?  Is it X* to base class pointer Base1* and then
Base1* to auto_ptr<Base1> by constructor? 
I see FactoryFunction is not template. Is it possible to use
explicit conversion in it. Looks like it is possible.

auto_ptr<Base1> FactoryFunction() { return auto_ptr<Base1>(new X); }

Thank you
Masaharu Goto


>class X: public Base1 {};
>
>class Base1: public TObject {};
>
>auto_ptr<Base1 *> FactoryFunction() { return new X; }
>
>and in CINT:
>
>auto_ptr<Base1 *> p = FactoryFunction(); 
>auto_ptr<TObject *> localobjs[10];  
>// localobjs is a polymorphic list of resources I own to be cleaned up
>// appropriately. I'm not using an STL container here because they don't
>// work well with auto_ptr :(
>localobjs[2] = p;                    
>



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:18 MET