2011-04-26 17 views
11

Muszę dziedziczyć z dwóch interfejsów, które obie mają tę samą metodę, która w obu przypadkach powinna wykonać dokładnie to samo. Czy ten kod jest poprawny, czy nie? Potrzebuję tego dla pewnego rodzaju klasy proxy. Dzięki za odpowiedzi.Interfejs C++ wiele dziedziczenia z tą samą metodą

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

Metody powinny być "wirtualne", prawda? –

+0

Oczywiście. Poprawione. –

+0

Ładne pytanie - od tytułu spodziewałem się miłego, prostego dziedziczenia diamentów (czyli wirtualnego dziedziczenia), ale z tym nie jestem pewien. Z pewnością można użyć rozdzielczości zakresu, aby nadpisać dwie odziedziczone metody o tej samej nazwie osobno, ale oznacza to duplikowanie kodu, więc jest to interesujące. – Steve314

Odpowiedz

7

Tak, to prawda. Pojedyncza metoda getID() może zastąpić obie metody wirtualne.

+1

Czy możesz podać informacje na ten temat i jaki będzie wynik? Dzięki! – wegginho

Powiązane problemy