2011-04-26 3 views
11

두 경우 모두 정확히 동일한 작업을 수행해야하는 동일한 방법을 가진 두 인터페이스에서 상속해야합니다. 이 코드가 맞습니까 또는 아닙니다입니까? 나는 어떤 종류의 프록시 클래스에 이것을 필요로한다. 답변 주셔서 감사합니다.동일한 방법으로 C++ 인터페이스 다중 상속

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

메소드는'virtual'이어야합니다, 맞습니까? –

+0

물론. 수정 됨. –

+0

좋은 질문 - 제목에서 나는 훌륭한 간단한 다이아몬드 상속 (그래서 가상의 상속을 사용)을 기대했지만, 이것으로는 확실하지 않습니다. 범위 분석을 사용하여 두 개의 상속 된 메서드를 동일한 이름으로 별도로 재정의 할 수는 있지만 코드가 중복되므로이 작업이 흥미 롭습니다. – Steve314

답변

7

네, 맞습니다. 단일 getID() 메서드는 두 가지 가상 메서드를 모두 재정의 할 수 있습니다.

+1

이 정보와 결과에 대한 정보를 제공해 주시겠습니까? 감사! – wegginho