rootcint parsing oddity

From: Dave Morrison (dave@bnl.gov)
Date: Mon Feb 22 1999 - 16:36:19 MET


Hi all,

I'm passing along an apparent rootcint oddity that Kyle Pope ran into when using
root 2.21/02 to build some of our production code.  He's distilled it down to a
single header file, so it should be a reasonable test case.  In a nutshell, a
base class declares a virtual function with the following signature (yes, I know
it's more common to say `const char *'):

	virtual void write(char const *) const;

and a derived class overrides this with the following declaration:

	void write(char const*) const;

note the lack of a space between `const' and `*' in the second signature.  When
fed this header, rootcint reports:

mynode_dict.cc:127: no matching function for call to `Bar2::write (char)'
mynode.h:23: candidates are: Bar2::write(const char *) const

It seems to have elided the `const*' completely out of the declaration in the
derived class and thinks it's looking for a signature to match `char'.

We have simple workarounds to be sure, but it might be worth a quick look to see
if rootcint can be taught to grok this.

Kyle's example code can be grabbed from the PHENIX computing pages:

http://www.phenix.bnl.gov/software/projects/root/FooBar.tar.gz

Cheers,
Dave

-- 
David Morrison  Brookhaven National Laboratory  phone: 516-344-5840
                Physics Department, Bldg 510 C    fax: 516-344-3253
		          Upton, NY 11973-5000  email: dave@bnl.gov



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:29 MET