Here is my version which works: Int_t fun(const Int_t n, Int_t x) { Int_t* arr = new Int_t[n]; arr[n-1] = x; Int_t ret = arr[n-1]; delete [] arr; return ret; } void pass(Int_t k, Int_t x) { for (Int_t i=1; i<=k ; i++) cout << "fun(" <<i<<","<<x<<") = " << fun(i,x) << endl; } I think that Masa Goto is now hard thinking about this problem. Radovan Jiri Bystricky wrote: > > Hi, > is anything wrong with the script 'test.C' (see below)? > It gives (ROOT version 3.00/02): > > root [0] .L test.C > root [1] cout << fun(1,5) << endl; > 5 > root [2] cout << fun(2,5) << endl; > 5 > root [3] pass(2,5) > fun(1,5) = 5 > Error: Array index out of range arr -> [1] valid upto arr FILE:test.C LINE:8 > fun(2,5) = 0 > *** Interpreter error recovered *** > root [4] cout << fun(2,5) << endl; > Error: Array index out of range arr -> [1] valid upto arr FILE:/tmp/filevtC7Yq_cint > LINE:2 > Error: Illegal pointer operation (tovalue) FILE:/tmp/filevtC7Yq_cint LINE:1 > *** Interpreter error recovered *** > > Cheers Jiri > ----------------------------------------------------------------------------- > test.C > > Int_t fun(const Int_t n, Int_t x) { > Int_t arr[n]; > arr[n-1] = x; > return arr[n-1]; > } > void pass(Int_t k, Int_t x) { > for (Int_t i=1; i<=k ; i++) > cout << "fun(" <<i<<","<<x<<") = " << fun(i,x) << endl; > } > -----------------------------------------------------------------------------
This archive was generated by hypermail 2b29 : Fri Jun 08 2001 - 11:51:20 MEST