Hi Ben, In the current version a variable size array of pointers (your case) is producing an error. In order to work-around the problem, you can use a flat array that you alias to the array you actually use. More specifically I included a new version of your class. //Class data.h #ifndef __data_h #define __data_h #include<iostream.h> #include "TObject.h" #include "TRandom.h" class data : public TObject { private: Int_t fNwire; Int_t fNchan; Int_t fArraySize; // this is 10*fNwire (it could also be fNwire*fNchan). Short_t *arrayflat; //[fArraySize] Short_t *array[10]; //!this is just for convenience, it is an alias to th // content of arrayflat' public: data(); virtual ~data(); void SetWC(Int_t a, Int_t b) {fNwire=a; fNchan=b; SetArray();} void SetArray(); void Display(); ClassDef(data,1) }; #endif //Class data.C ------------------------------------------------------------ #include "data.h" ClassImp(data) data::data() { fNwire=0; fNchan=0; for(Int_t i=0; i<10; i++) { array[i]=0; } } data::~data() { delete [] array; } void data::SetArray() { for(Int_t i=0; i<10; i++) { delete array[i]; } for(Int_t i=0; i<10; i++) { array[i] = new Short_t[fNwire]; for(Int_t j=0; j<fNwire; j++) { array[i][j] = 4; } } } void data::Display() { cout<<"\n"; for (Int_t i=0; i<10; i++) { for(Int_t j=0; j<fNwire; j++) { cout<<array[i][j]<<" "; } cout<<endl; } } Cheers, Philippe PS. In your destructor you had: 'delete [] array;' which did not match the way the arrays were allocated (i.e. array[i] = new Short_t[];), you need to make a loop and do 'delete [] array[i];'
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:43 MET