Hello rooters of the world.
A problem with deletion has arisen when trying to delete instances of a
class I made.
---------------
My header file:
class TFileData : public TObject {
private:
Bool_t fAvsFound, fSigsFound;
const Int_t fMaxPads;
Int_t fAnode, fField;
Char_t fFileName[50];
TArrayI fNoClusters;
TArrayF fChargeAvs, fChargeSigs, fPeakAvs, fPeakSigs;
TObjArray fClusters;
virtual void SetMaxPads(const Int_t pads) {}
virtual void Init(const Int_t n);
public:
TFileData();
TFileData(const Int_t pads, const Char_t* name, const Int_t anode = 0, const Int_t field = 0);
virtual void ~TFileData() {}
....
};
Member functions:
#include "TFileData.h"
TFileData::TFileData() : fMaxPads(40) {
strcpy(fFileName,"NN");
fAnode = 0;
fField = 0;
Init(fMaxPads);
}
TFileData::TFileData(const Int_t pads, const Char_t* name, const Int_t anode, const Int_t field)
: fMaxPads(pads) {
strcpy(fFileName,name);
fAnode = anode;
fField = field;
Init(fMaxPads);
}
virtual void TFileData::Init(const Int_t n) {
//
//Initialize members.
//
fNoClusters.Set(n+1);
fChargeAvs.Set(n+1);
fChargeSigs.Set(n+1);
fPeakAvs.Set(n+1);
fPeakSigs.Set(n+1);
fAvsFound = kFALSE;
fSigsFound = kFALSE;
}
....
----------------
I don not precomile it, only load it as is with
gROOT.LoadMacro("TFileData.C");
Making an instance is no problem:
root [0] fd = new TFileData(30,"file1",1200,300)
(class TFileData*)0x8888b48
My problem is that I don't manage to delete it:
root [1] delete fd
*** Break *** segmentation violation
Root > Function ~TFileData() busy flag cleared
I'm using v. 2.23/12 on RH6.1
I also enclose a very similar class which I use in the same
way. Instances of this one are easily deleted.
-----------
Header:
class TVoltData : public TObject {
private:
Bool_t fAvsFound, fSigsFound;
const Int_t fMaxPads;
Int_t fVolt;
TArrayI fNoClusters;
TArrayF fChargeAvs, fChargeSigs, fPeakAvs, fPeakSigs;
TObjArray fClusters;
virtual void SetMaxPads(const Int_t pads) {}
virtual void Init(const Int_t n);
public:
TVoltData();
TVoltData(const Int_t pads, const Int_t volt);
virtual void ~TVoltData() {}
....
};
Member functions:
#include "TVoltData.h"
TVoltData::TVoltData() : fMaxPads(40), fVolt(1000) {
Init(fMaxPads);
}
TVoltData::TVoltData(const Int_t pads, const Int_t volt) : fMaxPads(pads), fVolt(volt) {
Init(fMaxPads);
}
virtual void TVoltData::Init(const Int_t n) {
//
//Initialize members.
//
fNoClusters.Set(n+1);
fChargeAvs.Set(n+1);
fChargeSigs.Set(n+1);
fPeakAvs.Set(n+1);
fPeakSigs.Set(n+1);
fAvsFound = kFALSE;
fSigsFound = kFALSE;
}
....
--------------
--------------------------------------------------------------
Jens Ivar Jřrdre, masterstud. in Experimental Nuclear Physics
Addr.: Dep. of Phys., UiB, Allégt. 55, N-5007 BERGEN, NORWAY
E-mail: JensIvar.Jordre@fi.uib.no, Phone office: (+47)55582734
Web: http://www.fi.uib.no/~jens
"Time's fun when you're having flies."
-- Kermit the Frog
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:22 MET