El escenario que genera esto es bastante complejo así que voy a retirar de él unas pocas piezas y dar una representación exacta de las clases involucradas.C++ herencia múltiple Pregunta
/* This is inherited using SI by many classes, as normal */
class IBase
{
virtual string toString()=0;
};
/* Base2 can't inherit IBase due to other methods on IBase which aren't appropriate */
class Base2
{
string toString()
{
...
}
};
/* a special class, is this valid? */
class Class1 : public IBase, public Base2
{
};
¿Es esto válido? ¿Habrá conflictos en el toString? ¿O puede Class1 usar Base2 :: toString para satisfacer IBase? Como digo, hay muchas otras cosas que no se muestran, por lo que las sugerencias para cambios de diseño importantes en este ejemplo probablemente no sean tan útiles ... aunque cualquier sugerencia/consejo general es bienvenido.
Mi otro pensamiento fue algo como esto:
class Class1 : public IBase, public Base2
{
virtual string toString()
{
return Base2::toString();
}
};
Esto construye y enlaces, pero no tengo idea de si se ha ocultado errores.