2016-04-08 127 views
1

我有一個class A,我需要A class B: public A的子類。我怎樣才能實現我可以從這個類繼承,但沒有人可以從這兩個類繼承? 如果我讓class A最終B不能繼承A.只能從班級繼承一次

+2

我不清楚你想要什麼。你希望B能夠從A繼承,但是沒有新的類能夠從兩者繼承? – David

+1

您可能想要將'A'和'B'類合併到一個類中,並聲明該類爲'final'。 – jotik

回答

2

正如我評論:我不清楚你想要什麼。你想B能夠從A繼承,但是沒有新的類能夠從任何一個繼承?按照這個假設,你最好的選擇是讓A的私人和朋友B,同時使B最終。

我不知道你在做什麼,設計明智,但這是糟糕的設計。但它確實回答了你的問題。

5

C++沒有辦法說只有一個類可以從另一個類繼承。或者一個班級是final(因此不可以),或者不是。

絕對最好你可以做的是有A宣佈它的構造函數私人並使B朋友A。但是這會讓其他用戶難以創建A類型的對象。

2

只是一個想法(雖然我不認爲這實際上是一個很好的設計):雖然之前提到

class B; 
class A { 
    // everything's private 
    friend class B; // << except for class B 
}; 

class B final // << final prevents from further inheritance 
: A { 
    public: 
    // What you want to publish ... 
}; 

,我沒有看到多少點class A除非你想有更多的類實例化如class B