---- Best regards Valeri > -----Original Message----- > From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch] On > Behalf Of Exaos Lee > Sent: Tuesday, February 10, 2004 6:18 AM > To: roottalk@pcroot.cern.ch > Subject: [ROOT] How to initialize TH1F* aPtr[]? > > Dear ROOTer, > Please help me to check the attachments. I want to use an array of TH1F* > in my code. But I am confused by how to initialize it. And it is not > good to use something like "malloc", "calloc" in a C++ code. There are several ways to do what you want in C++. You can use either STL container classes or ROOT container classes. int ERootAnalysis::InitHist(int n) { int errNum = 0; pH1FArr = calloc(n,sizeof(TH1F*)); for(int i=0;i<n;i++) { TString hName = "h1f_"; hName += i; //TString hSpec = ""; pH1FArr[i]=new TH1F(hName.Data(),"",1000,0,1000); if(!pH1FArr[i]) errNum+=-1; } For example you may define your stl::vector<TH1F *> pH1Farr; and then use it in your code: int ERootAnalysis::InitHist(int n) { for(int i=0;i<n;i++) { TString hName = "h1f_"; hName += i; pH1Farr.push_back(new TH1F(hName.Data(),"",1000,0,1000)); } I would like to mention your if(!pH1FArr[i]) errNum+=-1; is useless because the operator "new" ALWAYS return non-zero pointer. > > Regards. > > Exaos
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET