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

Masaharu Goto (gotom@hpyiddq.jpn.hp.com)
Thu, 25 Sep 1997 9:54:45 JST


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