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