Re: interpreter error (in my c++ code)

From: Masaharu Goto (gotom@hpyiddq.jpn.hp.com)
Date: Thu Sep 25 1997 - 02:54:45 MEST


Rooters,

> > - non-default constructor coinsides with the default one...
> Certainly not. I changed my constructor just to

 This is not a problem.


> That's true - interactively everything is ok.
> 
> > I see 2 potential sources of confusion:
> > - 2 nested class declarations
> 
> and the problem still remains (segmentation violation). I want to notice
> this is the only problem I have untill now, all other classes (not nested)
> compiled & linked into new ROOT work fine.
 
 I reminded the nested class restriction in precompiled class. Nested 
 class works fine interactively. However for precompiled class, nested 
 classes are not registered into the dictionary. 
 It was a long time ago when I made this restriction. I do not remember
 clearly.  But I believe I did this to avoid dictionary compile error 
 due to compiler bug or something. 

 For the time being , please do not use nested classes in precompiled
 library.

 I propose following addition to the '#pragma link' statement.

   #pragma link [C++|C|off] nestedclass ;

 Default status is '#pragma link off nestedclasses;'.  When you use it,

   #pragma link off all classes;
   #pragma link C++ nestedclasses;
   #pragma link C++ class labelArea;
   #pragma link C++ class labelArea::areaHolder;

 Or simply 

   #pragma link C++ nestedclasses; 

 in case of this simple areaHolder case.

 I'm afraid to simply eliminate this restriction because there are so 
 many platforms and compilers Cint supports. With this method, a user 
 always have to explicitly turn on nested class registeration. It is
 user's risk to use this feature.

 This change is not difficult.  I plan to do this and send the new version
 to CERN tomorrow morning.

P.S.
 I'll be away for Embedded Systems Conference in San Jose, California
 next week.

Masaharu Goto



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:26:21 MET