2011-04-26 35 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

這些方法應該是虛擬的,對吧? – 2011-04-26 13:22:34

+0

當然。糾正。 – 2011-04-26 13:25:17

+0

不錯的問題 - 從標題我期待一個很好的簡單鑽石繼承(所以使用虛擬繼承)的事情,但與此我不知道。您當然可以使用作用域解析來分別重寫兩個具有相同名稱的繼承方法,但這意味着重複的代碼,所以這很有趣。 – Steve314 2011-04-26 13:26:24

回答

7

是的,這是正確的。單個getID()方法可以覆蓋兩個虛擬方法。

+1

你能否提供一些關於這方面的信息以及結果會是什麼?謝謝! – wegginho 2011-04-26 13:29:07