Another crash with rootcint (using a qt header)

Dear Philippe, here another doubt I have: I need to make some root objects persistent along with some basic type like stl strings, vectors and maps. The class that owns these types also owns qt types (like, for example, qstrings) but I do not need those to be made persistent. So I have this header file

[code]#ifndef TEST
#define TEST

#include “TObject.h”
#include <qstring.h>
class test
{
public:
test(void) ;
~test(void) {;}
private:
QString aString ; //! Not persistent

 ClassDef(test,1)  

} ;
#endif[/code]

(This is a very basic example posted here just to illustrate what happens when I run rootcint).
As you can see I have to include the [color=blue]qstring.h[/color] header but I commented out [color=red]aString[/color] to avoid rootcint to attempt to build a streamer for it).

Issuing

(QTDIR correctly points to the local qt installation) I have a very bad crash with the following traceback:

[quote]Error: Illegal pointer operation (tovalue) FILE:/usr/local/qt/include/qglobal.h LINE:148
Error: operator ‘/’ divided by zero FILE:/usr/local/qt/include/qglobal.h LINE:148
Syntax Error: defined(_SCO_DS)/SCOOpenServer5+GCC/ FILE:/usr/local/qt/include/qglobal.h LINE:148
Error: Illegal pointer operation (tovalue) FILE:/usr/local/qt/include/qglobal.h LINE:150
Error: operator ‘/’ divided by zero FILE:/usr/local/qt/include/qglobal.h LINE:150
Syntax Error: defined(USLC)/allSCOplatforms+UDKorOUDK/ FILE:/usr/local/qt/include/qglobal.h LINE:150
Error: Illegal pointer operation (tovalue) FILE:/usr/local/qt/include/qglobal.h LINE:153
Syntax Error: defined(svr4)&&defined(i386)/OpenUNIX8+GCC/ FILE:/usr/local/qt/include/qglobal.h LINE:153
#error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com"
Error: Function :data(0) is not defined in current scope FILE:/usr/local/qt/include/qgarray.h LINE:116
Possible candidates are…
filename line:size busy function type and name
Error: Symbol {}char is not defined in current scope FILE:/usr/local/qt/include/qgarray.h LINE:116
Error: Function len(0){}char is not defined in current scope FILE:/usr/local/qt/include/qgarray.h LINE:116
Possible candidates are…
filename line:size busy function type and name
Error: Function data;uintlen;};QGArray( is not defined in current scope FILE:/usr/local/qt/include/qgarray.h LINE:116
Possible candidates are…
filename line:size busy function type and name
Limitation: length of one function argument be less than 1024 FILE:/usr/local/qt/include/qgarray.h LINE:116
Use temp variable as workaround.
Error: improper lvalue FILE:/usr/local/qt/include/qgarray.h LINE:116
Error: class,struct,union or type QGArray not defined FILE:/usr/local/qt/include/qgarray.h LINE:119
Error: class,struct,union or type QGArray not defined FILE:/usr/local/qt/include/qmemarray.h LINE:48
Segmentation fault (core dumped)[/quote]

Is this the result of something I miss?

Thanks for your helpful suggestions. (The past ones helped me fix my problems)
Dario

If I modifiy the rootcint command from

allows me to make some progress. Now the traceback I get is the following:

[quote]Error: Function :data(0) is not defined in current scope FILE:/usr/local/qt/include/qgarray.h LINE:116
Possible candidates are…
filename line:size busy function type and name
Error: Symbol {}char is not defined in current scope FILE:/usr/local/qt/include/qgarray.h LINE:116
Error: Function len(0){}char is not defined in current scope FILE:/usr/local/qt/include/qgarray.h LINE:116
Possible candidates are…
filename line:size busy function type and name
Error: Function data;uintlen;};QGArray( is not defined in current scope FILE:/usr/local/qt/include/qgarray.h LINE:116
Possible candidates are…
filename line:size busy function type and name
Limitation: length of one function argument be less than 1024 FILE:/usr/local/qt/include/qgarray.h LINE:116
Use temp variable as workaround.
Error: improper lvalue FILE:/usr/local/qt/include/qgarray.h LINE:116
Error: class,struct,union or type QGArray not defined FILE:/usr/local/qt/include/qgarray.h LINE:119
Error: class,struct,union or type QGArray not defined FILE:/usr/local/qt/include/qmemarray.h LINE:48
Segmentation fault (core dumped)[/quote]

Always me.

Tryrootcint -f testDict.C -c -p -I$QTDIR/include test.h+QT uses macros extensively and the CINT preprocessor is not always capable to handle them. The -p option tells CINT to use the compiler’s preprocessor instead of CINT’s preprocessor.
Alternatively you can hide the QT member and header from CINT:

[code]#ifndef TEST
#define TEST

#include “TObject.h”
#ifndef MAKECINT
#include <qstring.h>
#endif
class test
{
public:
test(void) ;
~test(void) {;}
private:
#ifndef MAKECINT
QString aString ; //! Not persistent
#endif

 ClassDef(test,1) 

} ;
#endif[/code]Note that this will not work if your remove the ClassDef.

Cheers,
Philippe.