Título: ¿Por qué es ambigua la llamada a este método? Publicado por: Repikas en 25 Junio 2017, 21:25 pm Buenas, en el siguiente código se intenta llamar a una función f de la clase D, que hereda de B y C, en esta clase hay un sólo método f() ya que no hay duplicados al heredar virtualmente y un método f(int), los métodos se llaman igual pero reciben distinto tipo de parámetro, ¿por qué es ambiguo entonces?
Código: struct A { Gracias y un saludo Título: Re: ¿Por qué es ambigua la llamada a este método? Publicado por: ivancea96 en 26 Junio 2017, 14:43 pm Un par de conceptos rápidos.
Si una clase hereda de otra y tiene un método con el mismo nombre y diferentes parámetros, el método de la clase base no serña visible (salvo que se utilice un using A::f; dentro de la clase hija) Sin embargo, ese no es el problema aquí. Aquí el problema es que si D hereda de 2 clases que tienen 2 métodos con el mismo nombre, habrá ambigüedad aunque tengan diferentes parámetros. Para evitarlo, puedes escribir using para cada función: Código
En cualquier caso, salvo que vayas a heredar de una clase con funciones virtuales o salvo que quieras realmente eliminar la función de la base, mejor evitar tener métodos con el mismo nombre en diferentes clases de una herencia. |