0

クラスBaseA{}; 、クラスDerivedB {}; クラスDerivedC{};

DerivedBはBaseAから派生できます:許可したい:クラスDerivedB:パブリックBaseA

しかし、誰かがDerivedCを実行しようとした場合:publicBaseA==>これを制限したい。

出来ますか?

4

1 に答える 1

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
{
};
于 2012-05-25T20:33:47.040 に答える