Re:

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Sep 15 1998 - 14:53:43 MEST


Florian Schopper wrote:
> 
> Dear Rooters,
> 
> when I want to add my classes to root, I run into the following problem
> with structs:
> 
> Assume the following as Headerfile.h:
> /////////////////////////////////////////////////
> #include "TObject.h"
> 
> struct v550Map {
>         unsigned short CRAMintr;        /* CRAMS Interrupt Register       W*/
>         unsigned short CRAMstat;        /* CRAMS Status Register         RW*/
>         unsigned short CRAMnumch;       /* Number of channels            RW*/
>         unsigned short CRAMclear;       /* CRAMS Module Clear             W*/
>         unsigned char  PADDR1[226];     /* hole                              R */
> };
> 
> class  VmeModule : public TObject
>   {
>  private:
>     int                 VmeAdress;
>     int                 VmeSize;
> 
>     struct v550Map *Map;       // Actual Registers
>     struct v550Map  Dummy;     // If no hardware connected
> 
>  VmeModule(void){}
> ClassDef(VmeModule,1)
> } ;
> ////////////////////////////////////////////////////
> 
> The problem starts when creating the directory files:
> 
> rootcint -f vme_Cint.cxx -c testst.h LinkDef.h
> Note: operator new() masked 1c
> Note: operator delete() masked 1c
> *** Datamember VmeModule::Dummy: object has no Streamer() method (need
> manual intervention)
> 
> Sometimes I get the same for the *Map too.
> I don't need Object I/O for these structs, but I can't load the .so
> when Dummy or *Map is used.
> If I uncomment the structs, everything is fine for the rest of the
> classes.
> 

Florian,

In your header file, specify
ClassDef(VmeModule,0)
if you do not want I/O for your class.
You get unsatisfied external references because you do not have
an implementation file with the statement
ClassImp(VmeModule).

For more details, see URL
http://root.cern.ch/root/Using.html

Rene Brun



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