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