Por que funções herdadas múltiplas com o mesmo nome, mas assinaturas diferentes não são tratadas como funções sobrecarregada
O trecho a seguir produz um erro de "chamada ambígua para foo" durante a compilação e eu gostaria de saber se existe alguma maneira de contornar esse problema sem qualificar totalmente a chamada para 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;
}
Então, a pergunta é como o título diz. Idéias? Quero dizer, o seguinte funciona perfeitamente:
#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;
}