2011-04-26 3 views
11

Ho bisogno di ereditare da due interfacce che hanno entrambi lo stesso metodo che in entrambi i casi dovrebbe eseguire esattamente la stessa cosa. Questo codice è corretto o no? Ho bisogno di questo per qualche tipo di classe proxy. Grazie per le risposte.C++ interfaccia ereditarietà multipla con lo stesso metodo

class InnerInterface { 
    virtual int getID() const = 0; 
    //... 
}; 
class OuterInterface { 
    virtual int getID() const = 0; 
    //... 
}; 
class Foo : public InnerInterface, public OuterInterface { 
    virtual int getID() const; 
    //all abstract methods 
}; 
+8

I metodi dovrebbero essere 'virtuali', giusto? –

+0

Ovviamente. Corretto. –

+0

Bella domanda - dal titolo mi aspettavo una bella ereditarietà del diamante (quindi uso l'ereditarietà virtuale), ma con questo non sono sicuro. Si può certamente usare la risoluzione dell'ambito per sovrascrivere separatamente i due metodi ereditati con lo stesso nome, ma ciò significa codice duplicato, quindi questo è interessante. – Steve314

risposta

7

Sì, questo è corretto. Il singolo metodo getID() può ignorare entrambi i metodi virtuali.

+1

Potresti fornire alcune informazioni a riguardo e quale sarebbe il risultato? Grazie! – wegginho