RE:Re: [ROOT] rootcint + pair + nexted clas

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Sat Sep 01 2001 - 09:56:31 MEST


Hi Masa, 

On Thu, 30 Aug 2001 22:05:18 +0900
Masaharu Goto <MXJ02154@nifty.ne.jp> wrote
concerning "RE:Re: [ROOT] rootcint + pair + nexted clas":
> Hello Christian,
> 
> Sorry for delay in my reply,

No worry, at least not on my part, as it's really Bretts problem.  I just
explicitly wrote you since I thought it was a problem in CINT.  
 
> I tried your example and it compiled without problem
> with my RedHat6.2 Linux and ROOT/CINT 5.15.10. If you
> still have the problem, would you resend the information?

Anyway, the problem persists.  I'm using CINT 5.15.10 and ROOT 3.01/06
(in fact, it's almost 3.02/00 - I updated my checkout 2 hours before
René started 3.02 :-), on a GNU/Linux box running Redhat 6.2. 

Ok, so I have (or Brett has) the header file:

  // -*- mode: c++ -*-
  //--- begin classes.h ---//
  #ifndef PAIRCLASS_H
  #define PAIRCLASS_H
  #include <TObject.h>
  #include <list>
  #include <map>
  class SomeClass 
  {
  public:
    SomeClass();
    ~SomeClass();
  };
  
  #ifdef FOO
  typedef const SomeClass cSomeClass;
  #endif
  
  class PairClass : public TObject
  {
  public:
    PairClass();
    virtual ~PairClass();
  private:    
  #ifdef FOO
    map<int, pair < const int , cSomeClass* > > fPairListMap;
    list< pair < const int , cSomeClass* > > fPairList;
  #else
    map<int, pair < const int , const SomeClass* > > fPairListMap;
    list< pair < const int , const SomeClass* > > fPairList;
  #endif
  };
  #endif  // PAIRCLASS_H
  //--- end classes.h ---//

and a linkdef file: 

  //-*-mode: c++ -*- 
  //--- begin linkdef.h ---//
  #pragma link off all classes;
  #pragma link off all functions;
  #pragma link off all globals;
  
  #pragma link C++ class SomeClass;
  #pragma link C++ class PairClass; 
  
  #endif 
  //--- end linkdef.h ---//

If I do 

   rootcint -f dicts.cxx -c classes.h linkdef 

I get error messages like: 

  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

and it fails.  However, if I do 

   rootcint -f dicts.cxx -c -DFOO classes.h linkdef 

it succeeds. 

I think we probably got our wires crossed somewher, and you thought I
was talking about the case _with_ FOO defined.  I think you'll see
this problem too.  Ofcourse Brett and I may be doing something wrong
here, but I think not. 

Yours, 

Christian Holm Christensen -------------------------------------------
Address: Sankt Hansgade 23, 1. th.           Phone:  (+45) 35 35 96 91 
         DK-2200 Copenhagen N                Cell:   (+45) 28 82 16 23
         Denmark                             Office: (+45) 353  25 305 
Email:   cholm@nbi.dk                        Web:    www.nbi.dk/~cholm



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