¿Por qué las funciones heredadas múltiples con el mismo nombre pero con firmas diferentes no se tratan como funciones sobrecargadas?
El siguiente fragmento produce un error de "llamada ambigua a foo" durante la compilación, y me gustaría saber si hay alguna forma de evitar este problema sin calificar completamente la llamada a foo:
#include <iostream>
struct Base1{
void foo(int){
}
};
struct Base2{
void foo(float){
}
};
struct Derived : public Base1, public Base2{
};
int main(){
Derived d;
d.foo(5);
std::cin.get();
return 0;
}
Entonces, la pregunta es como dice el título. Ideas? Quiero decir, lo siguiente funciona perfectamente:
#include <iostream>
struct Base{
void foo(int){
}
};
struct Derived : public Base{
void foo(float){
}
};
int main(){
Derived d;
d.foo(5);
std::cin.get();
return 0;
}