Hello George, I might have missed a point in previous message. I understood you want FactoryFunction() have compiled. So it is not cint issue. Your point is on localobj[2]=p; Good news is that seems like it is possible with global function template. Adding following definition in cint standard header file, your example should work. ---------------------------------------------------------- template<class T,class X> auto_ptr<T>& operator=(auto_ptr<T>& a,auto_ptr<X>& b) { a = auto_ptr<T>(b.get()); b.release(); } ----------------------------------------------------------- Looking at this from a little differnt aspect. Apart from cint. I usually deal with such case with AutoContainer adapter. This is less flexible but more efficient and can use STL containers. -------------------------------------------------------- #include <algorithm> using namespace std; template <class T> struct DeleteObj : unary_function<T,T> { T operator()(const T& x) const {delete x; return 0;} }; template<class pObjBase,class Container> struct AutoContainer : public Container { ~AutoContainer() {transform(rbegin(),rend(),rbegin(),DeleteObj<pObjBase>());} }; class TObject { }; class Base1: public TObject {}; class X: public Base1 {}; Base* FactoryFunction() { return new X; } main() { AutoContainer<Base1*,vector<Base1*> > localobj(10); localobj.push_back(FactoryFunction()); } --------------------------------------------------------- The adapter concept appears in STL stack and queue container. If you would like, you can add pop functions in AutoContainer. I wonder if this makes more sense to your application. 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