(no subject)

From: Alessandro.Thea@ge.infn.it
Date: Thu Jun 10 2004 - 12:20:38 MEST


Hello rooters, 
I noticed the following problem with vector< double(*)[4] > structure and rootcint:

it nicely complies:
g++ -c MyClass.cxx

However rootcint does not like this structure with vectors:
 rootcint -f MyClassDict.cxx -c MyClass.h LinkDef.h
Error: unrecognized language construct FILE:prec_stl/vector LINE:302
Error: unrecognized language construct FILE:prec_stl/vector LINE:306
Error: unrecognized language construct FILE:prec_stl/vector LINE:308
Error: unrecognized language construct FILE:prec_stl/vector LINE:318
Error: unrecognized language construct FILE:prec_stl/vector LINE:360
Syntax Error: * FILE:prec_stl/vector LINE:362
Error: unrecognized language construct FILE:prec_stl/vector LINE:368
Error: unrecognized language construct FILE:prec_stl/vector LINE:369
Error: Too many '}' FILE:prec_stl/vector LINE:584
Error: Unexpected EOF G__exec_statement() FILE:prec_stl/iterator LINE:38
Advice: You may need to use +P or -p option
Error: Unexpected EOF G__fgetname():2 FILE:prec_stl/iterator LINE:38
Advice: You may need to use +P or -p option
Error: Unexpected EOF G__fgetvarname():2 FILE:prec_stl/iterator LINE:38
Advice: You may need to use +P or -p option
Error: Unexpected EOF G__fgetstream():2 FILE:prec_stl/iterator LINE:38
Advice: You may need to use +P or -p option
Syntax Error:  Maybe missing ';' FILE:prec_stl/iterator LINE:38
Warning: Error occured during reading source files
Warning: Error occured during dictionary source generation
!!!Removing MyClassDict.cxx MyClassDict.h !!!
Error: rootcint: error loading headers...


None of these options +P, -P, -p helps...

It is possible to fix the problem addind the following lines:
#ifndef __MAKECINT__
    vector< Double_t(*)[4] > fVector;  // vector of bidimensional tables
#endif


I eager to know if this problem can be fixed in a legal and more elegant way?

Please find below three simple files MyClass.h and MyClass.cxx and linkDef.h

Thanks,
                Alessandro

--------
MyClass.h:

#ifndef __MYCLASS__
#define __MYCLASS__

#include <vector>

class MyClass {

    public:
    MyClass();
    virtual ~MyClass();
    std::vector< double(*)[4] > fVector;

};
#endif

MyClass.cxx:
--------

#include "MyClass.h"

MyClass::MyClass() {

    unsigned int size(10);
    double (*dummy)[4] = new double[size][4];

    fVector.push_back(dummy);
}

MyClass::~MyClass() {
}

--------

LinkDef.h:

---------

#ifdef __CINT__

#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;

#pragma link C++ class MyClass+;

#endif

-------------------------------------------------
This mail sent through IMP: http://horde.org/imp/



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET