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