Hello Holm, Thank you for giving me a specific example of the problem. I can reproduce the problem on Root now. With simpler case, giving 0 to pointer argument works without problem. I guess this is not simply that problem, but with some other complication. I will continue debugging this problem. Also, if there are other examples of the same problem, please let me know. Thank you Masaharu Goto > >Hi ROOT'ers, > >I know this question has been raised before, (see roottalk entry >http://root.cern.ch/root/roottalk/roottalk00/1440.html) but it didn't >seem like there was much ado, so I thought I'd raise some. > >It seems that the interactive ROOT (or CINT!?) has some problem with >the 0 pointer as argument where it expects an object pointer. It >complains about missing method or bad arguments, as if 0L isn't a >valid pointer for _any_ class! As far as I can gather from the >ANSI/ISO C++ standard section 4.10, 0L is a valid pointer for _any_ >class, and should automatically be converted to the prober class >pointer. > >I first got aware of this problem when I used g2root to get a detector >definition. I've abstracted the basic code below: > > ******************************************* > * * > * W E L C O M E to R O O T * > * * > * Version 2.24/04 5 May 2000 * > * * > * You are welcome to visit our Web site * > * http://root.cern.ch * > * * > ******************************************* > > Compiled with thread support. > > CINT/ROOT C/C++ Interpreter version 5.14.37, Apr 29 2000 > Type ? for help. Commands must be C++ statements. > Enclose multiple statements between { }. > > root [0] TMaterial* mat = new TMaterial("mat","mat", 1, 1, 1); > root [1] TBRIK* brik = new TBRIK("brik","brik", "mat", 1, 1, 1) > root [2] TNode* node = new TNode("node","node", brik,0,0,0,0) > Error: Can't call TNode::TNode("node","node",brik,0,0,0,0) in current scope FILE:/tmp/filetzcH8z_cint LINE:1 > Possible candidates are... > filename line:size busy function type and name (in TNode) > (compiled) 0:0 0 public: TNode TNode(void); > (compiled) 0:0 0 public: TNode TNode(const char* name,const char* title,const char* shapename,Double_t x=0,Double_t y=0,Double_t z=0,const char* matrixname,Option_t* option); > (compiled) 0:0 0 public: TNode TNode(const char* name,const char* title,TShape* shape,Double_t x=0,Double_t y=0,Double_t z=0,TRotMatrix* matrix=0,Option_t* option); > (compiled) 0:0 0 public: TNode TNode(TNode&); > filename line:size busy function type and name (in TNamed) > filename line:size busy function type and name (in TObject) > filename line:size busy function type and name (in TAttLine) > filename line:size busy function type and name (in TAttFill) > filename line:size busy function type and name (in TAtt3D) > *** Interpreter error recovered *** > root [3] > >This is on a Pentium III, running Redhat Linux 6.1. The ROOT >distribution is the standard one from > ftp://root.cern.ch/root/root_v2.24.Linux.2.2.14.tar.gz >(no patches). > >If this has been fixed in 2.24.05, sorry to bother you with this. > >Cheers, > >Christian ----------------------------------------------------------- >Holm Christensen Phone: (+45) 35 35 96 91 > Sankt Hansgade 23, 1. th. Office: (+45) 353 25 305 > DK-2200 Copenhagen N Web: www.nbi.dk/~cholm > Denmark Email: cholm@nbi.dk >
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:25 MET