Hi,
I have a very bizarre problem:
I have a class which derives from TGraph:
class ThresholdCurve:public TGraph {
public:
bool calib; // Threshold calibrated?
bool ismod; // Is it a module?
int id; // Module (or plane if a plane) id
ThresholdCurve() {id = 0; calib = true; ismod = true;}
virtual ~ThresholdCurve() {}
void SetCalib(bool c = true) { calib = c;}
bool GetCalib() {return calib;}
void SetId(int i) {id = i;}
int GetId() {return id;}
void SetIsMod(bool m) {ismod = m;}
bool GetIsMod() {return ismod;}
ClassDef(ThresholdCurve, 1)
};
The ClassImp macro is in the .cpp file
I compile this as part of a shared object library and load it into root:
*******************************************
* *
* W E L C O M E to R O O T *
* *
* Version 3.03/07 6 August 2002 *
* *
* You are welcome to visit our Web site *
* http://root.cern.ch *
* *
*******************************************
FreeType Engine v1.x used to render TrueType fonts.
Compiled for linuxicc with thread support.
CINT/ROOT C/C++ Interpreter version 5.15.51, July 19 2002
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] .L libTB2001.so
root [1] t = new ThresholdCurve
(class ThresholdCurve*)0x87dea38
root [2] gDebug = 1000
(const int)1000
root [3] t->Inspect()
SetTextSize: -1.000000
*** Break *** segmentation violation
Root > SetTextSize: -1.000000
And as you can see, there is a seg violation. If I change the inheritance to:
class ThresholdCurve: TNamed {
//as above
};
Then it works fine
Changing it again to:
class ThresholdCurve: TNamed, TAttFill {
//as above
};
gives the same error as above. Does anyone have any idea what might be
wrong? I suspect that it is something to do with the multiple inheritance
from classes that don't derive from TObject, but I couldn't see anything
special in the TGraph class to make it work.
Thanks
Matt
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:04 MET