[ROOT] KCC and ROOT incompatibility??

From: Simon Dean (sdean@hep.man.ac.uk)
Date: Thu Apr 04 2002 - 01:44:47 MEST


OK, thanks a lot Philippe and Brett. That sorts out my problem. However, I
think I've uncovered a compatibility problem with KCC on linux.

I made a small class called randomclass - here is the code:

------- In randomclass.hpp -------
class randomclass : public TObject{
private:

  int randomvariable;

public:

  randomclass();
  ~randomclass();

  ClassDef(randomclass,0)  

};

-------- In randomclass.cpp ------
ClassImp(randomclass)

randomclass::randomclass(){
  if (randomvariable){
    cout << "randomclass constructor:" << endl;
    cout << "randomvariable = " << randomvariable << endl;
  }
  randomvariable = 0;
}

randomclass::~randomclass(){
  randomvariable = 5;
  cout << "randomclass destructor:" << endl;
  cout << "randomvariable = " << randomvariable << endl;
}


I made a small program, here is the code: 


int main(int argc, char **argv){
  
  randomclass *random;
  random = new randomclass();
  delete random;
  random = new randomclass();

  return 0;

}


When I build this program with g++ and run it, I get the
(expected) output:

randomclass destructor:
randomvariable = 5

However, when I build it with KCC and run it, I get the
(unexpected) output:

randomclass destructor:
randomvariable = 5
randomclass constructor:
randomvariable = 5

!!!!! randomvariable seems to have 'survived' the delete and new
statements!!!!!!

If anyone has made it this far, is not asleep and wishes to reproduce my
results then I have included the files with this e-mail. Just save
everything in a test directory, in Makefile set THISFILENAME (on line
18) to either 'linuxkcc' for KCC or 'linux' for g++ compilation, then type
'make'.

This will make an executable called messingaround which (should!) give the
above results,

cheers,

Simon










This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:48 MET