Dear Rooters, I have a question about TMap. When I try to run the attached file, I got different answers using root version 2.25/03 and 3.00/05. with Version 2.25/03 fa=0x3cdb98 a=0x3cdb48 amc=0x3bf500 val=0x3bf500 fb=0x3cdb98 b=0x3cdb70 bmc=0x3bf520 val=0x3bf500 with Version 3.00/05 fa=4d4520 a=4d1e38 amc=4d1e50 val=4d1e50 fb=4d4540 b=4d1e68 bmc=4d1e80 val=4d1e80 I thought two outputs of "val" would be same. It looks that "MyObject.IsEqual" does not work in "TMap" for root 3.00/05. Would you suggest me if any idea? Thanks very much in advance, - Toshi Name : Toshinori Abe Add. : SLAC M/S 96, 2575 SandHill Road, Menlo Park, CA 94025, USA E-mail : toshi@SLAC.Stanford.EDU ---------------------------------------------------------------------- #include <iostream.h> #include "TROOT.h" #include "TMap.h" #include "TMath.h" #include "TObject.h" class MyObject : public TObject { private: Int_t m_ID; public: MyObject(Int_t ID) {m_ID=ID;} MyObject() {m_ID=0;} ~MyObject(){} Int_t GetID() {return m_ID;} ULong_t Hash(){ return m_ID;} Bool_t IsEqual(TObject *obj){ return m_ID == ((MyObject*)obj)->GetID();} }; TMap *MyList = new TMap( 17, 0 ); int main (int argc,char* argv[]) { TROOT simple( "Test", "MyObject test" ); MyObject* a=new MyObject(1); TObject* amc=new TObject(); MyObject* b=new MyObject(1); TObject* bmc=new TObject(); MyList->Add(a,amc); MyList->Add(b,bmc); cout<<"fa="<<MyList->FindObject(a)<<" a="<<a<<" amc="<<amc<< " val="<<MyList->GetValue(a)<<endl; cout<<"fb="<<MyList->FindObject(b)<<" b="<<b<<" bmc="<<bmc<< " val="<<MyList->GetValue(b)<<endl; return 0; }
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:36 MET