To answer your questions.............. On Wed, 3 Apr 2002, Philippe Canal wrote: > Hi Simon, > > Theoritically, since you create a new object and do set the value to 0, > it should still be zero at the end of the constructor. However (and I > do not have enough information to guess properly) there are many situations > were this could happen, all depend on your actual code. Some of this > situations included one where the pointer you are using is not refreshed to > the new address, some other objects has kept a pointer to the old object > (eventhough it was deleted) and is using it and writing stuff in it, > or the constructor is not executed eventhough you thought it should, etc........ > > More concretely, how do you destroy the object, how do you create the > new object, how do you check/print the new value. In my program, I maintain a pointer called fSdaq. First I do: fSdaq = new SDAQ(runnumber, fCanvas, fCrateMap); then later on, I do delete fSdaq; followed by the same 'new' command (the arguments have changed by this time): fSdaq = new SDAQ(runnumber, fCanvas, fCrateMap); Now, the way I check values is to insert strategic output comands in the source code. The following code shows where I make this output: SDAQ::SDAQ() { (other integers set to zero here) numHDI = 0; cout << "numHDI is " << numHDI << " at end of constructor" << endl; } SDAQ::SDAQ(Int_t run, TCanvas *canvas = 0, Cratemap *cratemap = 0) { if (canvas) fCanvas = canvas; if (cratemap) fCrateMap = cratemap; cout << "numHDI is " << numHDI << " before default constructor" << endl; SDAQ(); // <--------Default constructor cout << "numHDI is " << numHDI << " after default constructor" << endl; fillRuns(run); } when running, my program gives (amongst other stuff) the following output after deleting a SDAQ with numHDI=70 and making a new one (as desribed above): numHDI is 70 before default constructor numHDI is 0 at end of constructor numHDI is 70 after default constructor > Cheers, > Philippe. > > PS. A priori the ROOT system does not hold any information about your > object and should not be a factor in this situtation .... cheers, Simon PS... The problem is pseudo-solved by setting all of the previous SDAQ's values to zero in the destructor. This is an unnerving solution, however.... :)
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:48 MET