2016-04-08 128 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