限制继承

San*_*ndy 0 c++

class BaseA {}; ,类DerivedB {}; class DerivedC {};

DerivedB可以从BaseA派生:想要允许:class DerivedB:public BaseA

但是,如果有人试图做DerivedC:public BaseA ==>想要限制它.

可能吗?

Luc*_*ore 6

你可以让所有BaseA的构造私人和添加DerivedB作为一个friendBaseA的.

class BaseA
{
    friend class DerivedB;
private:
    BaseA();
};
class DerivedB : BaseA
{
};
class DerivedC : BaseA  //error - I get it when I try to create an object in MSVS
                        //but in principle it works
{
};
Run Code Online (Sandbox Code Playgroud)