In senso molto stretto, la risposta è "Sì": supponendo che le classi o le interfacce di base siano progettate per un unico scopo, ereditarle entrambe crea una classe con responsabilità multiple. Tuttavia, che si tratti o meno di "una cosa negativa" dipende dalla natura delle classi o delle interfacce che si stanno ereditando.
Puoi suddividere le classi e le interfacce in due gruppi principali: quelli che affrontano la complessità essenziale del tuo sistema e quelli che affrontano la sua complessità accidentale. Se ereditato da più di una classe di "complessità essenziale", è male; se erediti da una "essenziale" e una o più classi "accidentali", va bene.
Ad esempio, in un sistema di fatturazione potresti avere classi per rappresentare fatture e cicli di fatturazione (affrontano la complessità essenziale) e classi per oggetti persistenti (affrontano la complessità accidentale). Se erediti in questo modo
class BillingCycleInvoice : public BillingCycle, public Invoice {
};
è un male: hai BillingCycleInvoice
una responsabilità mista in relazione alla complessità essenziale del sistema.
D'altra parte, se erediti in questo modo
class PersistentInvoice : public Invoice, public PersistentObject {
};
la tua classe è OK: tecnicamente, serve due preoccupazioni contemporaneamente, ma poiché solo una di esse è essenziale, puoi cancellare l'eredità accidentale come "costo per fare affari".