
Use Protected Constructors to Block Undesirable Object Instantiation
In order to block creation of class instances, you can declare its constructor as protected. class CommonRoot { protected: CommonRoot(){}//no objects of this class can be instantiated};class Derived: public CommonRoot {public: Derived() {}};Derived d; // OK, constructor of d has access to any protected member in its base classCommonRoot cr;