Полностью осознавая, что вопрос, который я задаю, выходит за рамки стандарта 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()