我知道我所问的问题超出了C++标准的范围,但我很好奇为什么GCC会两次抛出相同的错误?我知道为什么会有这个错误,但我希望能够理解为什么会有错误信息的重复。
#include <iostream>
using namespace std;
struct A{
virtual void f1() = 0;
};
struct B : A{
};
struct C : A{
void f1(){}
};
struct D : C, B{
void f2(){f1();}
};
int main(){}
错误:
prog.cpp: In member function ‘void D::f2()’:
prog.cpp:16: error: reference to ‘f1’ is ambiguous
prog.cpp:5: error: candidates are: virtual void A::f1()
prog.cpp:12: error: virtual void C::f1()
prog.cpp:16: error: reference to ‘f1’ is ambiguous
prog.cpp:5: error: candidates are: virtual void A::f1()
prog.cpp:12: error: virtual void C::f1()