Hi Giuseppe,
You have declared the class secondaclass in BOTH the header file and the
implementation file. You should eliminate the declaration from the
implementation file (In addition the 2 declaration to no agree, one has a
ClassDef the other does not).
Thirdly, until tomorrow or the day after (yes really :) ), You can NOT had a
semi-colon (';') after the ClassDef macro. I.e you have to use:
void print();
ClassDef(secondaclasse,1)
};
In the next day or so, we will update the ROOT cvs repository so that one
can add the semi-colon after ClassDef. The update will also allow ClassDef
to be parsed by the interpreted. The down-side is for developers who wrote
their own custom ClassDef, those (if any) would need to mirror our changes.
Cheers,
Philippe.
-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of
giuseppe.foggi@libero.it
Sent: Friday, July 26, 2002 11:42 AM
To: roottalk@pcroot.cern.ch
Subject: [ROOT] Problem with rootcint
Hi ROOTers,
I have some problems.
I wrote a simple class:
#include <iostream.h>
#include "TObject.h"
#include "secondaclasse.h"
ClassImp(secondaclasse); // Seconda classe
class secondaclasse : public TObject
{
private:
int x,y;
public:
secondaclasse();
void setx(int xx);
void sety(int yy);
void print();
};
secondaclasse::secondaclasse()
{
x=0;
y=0;
}
void secondaclasse::setx(int xx)
{
x=xx;
}
void secondaclasse::sety(int yy)
{
y=yy;
}
void secondaclasse::print()
{
cout<<"\nX= "<<x<<"\tY= "<<y<<endl;
}
and the class header is
#include <iostream.h>
#include "TObject.h"
class secondaclasse : public TObject
{
private:
int x,y;
public:
secondaclasse();
void setx(int xx);
void sety(int yy);
void print();
ClassDef(secondaclasse,1);
};
When I write
rootcint dict.cxx -c secondaclasse.h LinkDef.h
I get:
Class secondaclasse: Streamer() not declared
Class secondaclasse: ShowMembers() not declared
Why?
My LinkDef.h is
#ifdef __CINT__
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;
#pragma link C++ class secondaclasse+;
#endif
After, I write:
g++ -fPIC -I $ROOTSYS/include dict.cxx
and I get several errors, for example
dict.cxx: In function `int G__secondaclasse_ClassDef_4_0 (G__value *,
const char *, G__param *, int)':
dict.cxx:104: parse error before `private'
dict.cxx:104: cannot declare static function inside another function
dict.cxx:104: cannot declare static function inside another function
dict.cxx:104: parse error before `{'
dict.cxx:104: warning: no return statement in function returning
non-void
...........
Why?
Thank you for your help.
Giuseppe.
My system is Linux Red Hat 7.1
ROOT version is : ROOT 3.02/07
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:01 MET