2012-04-25 41 views

回答

1

不嚴格通過繼承。雖然A和B是C的父母,但A和B沒有關係,也無法訪問彼此。

它通過繼承和polimorphism是可能的,那麼類A有是c實現調用B中的功能的虛擬方法,像這樣:

class A { 
public: 
    b get_b() { return do_get_b(); } 
private: 
    virtual do_get_b() = 0; 
}; 

class B { 
public: 
    b some_b; 
}; 

class C : public A, public B { 
private: 
    virtual do_get_b() {return some_b;} 
} 
+0

感謝您的偉大答案。但我並不清楚。 B班內部有什麼「b some_b」的意思。 Y在類A「b get_b()」內實現。 – Sijith 2012-04-25 06:53:05

+0

b some_b是類型b的名爲「some_b」的成員變量 – daramarak 2012-04-25 08:19:01

0

有時候,這是可能的。 An example how to achieve this.

該示例適用於鑽石層次結構,這比您的鑽石層次更復雜一些。用你的術語來說,ClassA和ClassB應該是從Base類派生的,ClassC是從ClassA和ClassB派生的。

+0

在這裏,我沒有任何基類calss繼承的A類和B類。在這種情況下,有可能從A類訪問B類樂趣 – Sijith 2012-04-25 06:46:22

+0

您可以考慮添加基類 – Andrey 2012-04-25 06:53:54

0

您可以用dynamic_cast的檢查,看看是否你的一個對象實際上是C的一個對象,因此B如果A和B真的相互獨立,那麼最​​好找到一個不同的解決方案。

相關問題