Re: [ROOT] STL in template class

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Feb 25 2003 - 23:49:22 MET


Hi Jedong,

Unfortunately, you do not indicate which version you use.

Philippe fixed this problem a few weeks ago in the development version.

Rene Brun

On 
Tue, 25 Feb 
2003, Jedong Lee wrote:

> Hi,
> 
> Is it possible to use STL in a template class? When I tried to compile
> a template with a vector<Int_t> as a memeber, I get a long list of
> errors, starting with:
> 
> --------------------------------------------------------------------
> <**compiling**> TestClass_dict.o
> "TestClass_dict.C", line 447: error: type name is not allowed
>         G__letint(result7,105,(long)((vector<int,allocator<int> >*)(G__getstructoffset()))->reverse_iterator(*(vector<int,allocator<int> >::reverse_iterator*)libp->para[0].ref));
>                                     ^
> 
> "TestClass_dict.C", line 452: error: class
>           "std::vector<Int_t, std::allocator<Int_t>>" has no member "base"
>         G__letint(result7,73,(long)((vector<int,allocator<int> >*)(G__getstructoffset()))->base());
>                                                                                            ^
> 
> "TestClass_dict.C", line 458: error: class
>           "std::vector<Int_t, std::allocator<Int_t>>" has no member "operator*"
>           const int& obj=((const vector<int,allocator<int> >*)(G__getstructoffset()))->operator*();
>                                                                                        ^
> 
> "TestClass_dict.C", line 466: error: class
>           "std::vector<Int_t, std::allocator<Int_t>>" has no member
>           "operator++"
>           vector<int,allocator<int> >::reverse_iterator& obj=((vector<int,allocator<int> >*)(G__getstructoffset()))->operator++();
>                                                                                                                      ^
> 
> "TestClass_dict.C", line 474: error: class
>           "std::vector<Int_t, std::allocator<Int_t>>" has no member
>           "operator++"
>           vector<int,allocator<int> >::reverse_iterator *pobj,xobj=((vector<int,allocator<int> >*)(G__getstructoffset()))->operator++((int)G__int(libp->para[0]));
>                                                                                                                            ^
> 
> "TestClass_dict.C", line 484: error: class
>           "std::vector<Int_t, std::allocator<Int_t>>" has no member
>           "operator--"
>           vector<int,allocator<int> >::reverse_iterator& obj=((vector<int,allocator<int> >*)(G__getstructoffset()))->operator--();
>                                                                                                                      ^
> --------------------------------------------------------------------
> 
> These are my sources:
> 
> ====================================================================
> = TestClass.h
> ====================================================================
> #ifndef __TestClass__
> #define __TestClass__
> 
> #include "TObject.h"
> #include <vector>
> 
> template<class Type>
> class TestClass : public TObject
> {
> public:
> 
>   TestClass();
>   ~TestClass();
> 
> private:
> 
>   Type *_tree;
> 
>   vector<Int_t> vi;
> 
>   ClassDefT(TestClass, 1)
> };
> 
> template<class Type>
> TestClass<Type>::TestClass()
> {
>   _tree = new Type;
> }
> 
> template<class Type>
> TestClass<Type>::~TestClass()
> {
> }
> 
> #endif 
> 
> ====================================================================
> = TestClass.C
> ====================================================================
> #include "TestClass.h" 
> 
> ====================================================================
> = TestClass.C
> ====================================================================
> #ifdef __CINT__
> 
> #pragma link off all globals;
> #pragma link off all classes;
> #pragma link off all functions;
> 
> #pragma link C++ class TestClass<Double_t>+;
> 
> #endif
> 
> --------------------------------------------------------------------
> 
> Thank you,
> Jedong
> 



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:09 MET