multiple inheritance abiguity

Rich Johnson rjohnson@dogstar-interactive.com
Thu Jan 19 01:55:00 GMT 2006


Hi folks--

Compiling the following (with no options) produces an ambiguity error:
 >>file:  bug.cpp  >>>>>>>>>
struct C1 { void f( double ){}; };
struct C2 { void f( int ){}; };

class M : public C1, public C2 {};

int main()
{
   double c1;
   M m;
   m.f(c1);
}
<<<<<<<<<<<<<<<<<
The specific error report is:
$ g++ bug.cpp -o bug
bug.cpp: In function `int main()':
bug.cpp:11: error: request for member `f' is ambiguous
bug.cpp:2: error: candidates are: void C2::f(int)
bug.cpp:1: error:                 void C1::f(double)

I've tried both g++(4.0.0 20041026) on Mac OS X 10.4.4, g++(4.0.3  
20051201) on debian(powerpc) unstable. and   g++-3.3.6 (Debian  
1:3.3.6-10).  All three report the same error.

Is the code proper C++?  If not, what am I missing?
Given that there's there's only one method with a ''void f(double)"  
signature where's the source of the ambiguity?

Thnx
--rich



More information about the Gcc-help mailing list