Lo scenario che genera questo è piuttosto complesso, quindi spoglierò alcuni pezzi e fornirò una rappresentazione accurata delle classi coinvolte.Domanda di ereditarietà multipla C++
/* 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
{
};
Quindi, è valido? Ci saranno conflitti sul toString? Oppure Class1 può usare Base2 :: toString per soddisfare IBase? Come ho detto ci sono molte altre cose non mostrate, quindi i suggerimenti per le modifiche di progettazione più importanti su questo esempio non sono probabilmente così utili ... anche se qualsiasi suggerimento/consiglio generale è benvenuto.
altro mio pensiero era qualcosa di simile:
class Class1 : public IBase, public Base2
{
virtual string toString()
{
return Base2::toString();
}
};
Questo costruisce e link, ma non ho idea se è nascosto bug.