Re: [ROOT] rootcint + pair + nexted class.

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed Aug 22 2001 - 12:28:55 MEST


Hi Brett,

Support for STL is only available if you specify the option "+" in your LinkDef
file.
Change:
#pragma link C++ class PairClass;
to
#pragma link C++ class PairClass+;

Rene Brun


Brett Viren wrote:
> 
> Hi,
> 
> I am having problem getting rootcint to run on a class which has a
> nested class and which uses pair<>.  I have excerpted code which
> reproduces the problem and it is appended.  Also appended is the
> errors from running:
> 
>   rootcint -f PairClassCint.cc -c PairClass.h PairClassLinkdef.h
> 
> Compiling PairClass.{h,cxx} with g++ 2.95.4 (Debian GNU/Linux x86)
> succeeds, so I don't think I am doing illegal C++.  This is with ROOT
> CVS as of today.
> 
> Any ideas?
> -Brett.
> 
> //--- begin ROOTCINT errors ---//
> bviren@minos:test> rootcint -f PairClassCint.cc -c PairClass.h PairClassLinkdef.h
> Error: Symbol constSomeClass is not defined in current scope  FILE:prec_stl/utility LINE:12
> Error: Symbol second is not defined in current scope  FILE:prec_stl/utility LINE:12
> Warning: Unknown type 'constSomeClass' in function argument handled as int FILE:prec_stl/utility LINE:14
> Error: Symbol pair<int is not defined in current scope  FILE:prec_stl/list LINE:143
> Error: Symbol constSomeClass is not defined in current scope  FILE:prec_stl/list LINE:143
> Error: G__getvariable: expression  FILE:prec_stl/list LINE:143
> Warning: Error occured during reading source files
> Warning: Error occured during dictionary source generation
> !!!Removing PairClassCint.cc PairClassCint.h !!!
> rootcint: error loading headers...
> //--- end ROOTCINT errors ---//
> 
> //--- begin PairClass.h ---//
> #ifndef PAIRCLASS_H
> #define PAIRCLASS_H
> #include "TBox.h"
> #include <list>
> #include <map>
> 
> class SomeClass;
> 
> class PairClass : public TObject
> {
> public:
>     typedef pair<int,const SomeClass*> MyPair;
> 
>     class MyPairList : public TBox {
>         list <MyPair> fPairList;
>     public:
>         MyPairList();
>         virtual ~MyPairList();
>     };
> 
>     PairClass();
>     virtual ~PairClass();
> 
> private:
>     map<int,MyPairList*> fPairListMap;
> };
> #endif  // PAIRCLASS_H
> //--- end PairClass.h ---//
> 
> //--- begin PairClass.cxx ---//
> #include "PairClass.h"
> PairClass::PairClass() {}
> PairClass::~PairClass() {}
> PairClass::MyPairList::MyPairList() {}
> PairClass::MyPairList::~MyPairList() {}
> //--- end PairClass.cxx ---//
> 
> //--- begin PairClassLinkdef.h ---//
> #ifdef __CINT__
> #pragma link off all globals;
> #pragma link off all classes;
> #pragma link off all functions;
> #pragma link C++ class PairClass;
> #endif
> //--- end PairClassLinkdef.h ---//



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:58 MET