C++ 如何在修改设计时停止现有代码基类的实例创建?

C++ 如何在修改设计时停止现有代码基类的实例创建?,c++,C++,有几个类是从base派生的。 现有代码:基类不是抽象类,所以有基类实例和所有派生类。所有测试都已经完成 要求:现在我想停止基类的实例创建,而不改变/测试所有派生类。如何做到这一点?使所有的基类构造函数(包括默认构造函数和复制构造函数)私有或受保护。一个选项是使基的每个构造函数都受保护,因此它们只能由派生类和类本身访问。这将阻止对象本身的实例化,但允许基类的实例化 如果基类没有构造函数,那么只需声明一个不带参数的新的空构造函数。还要确保提供复制构造函数的实现(或保持它未实现且私有),这样自动生成的

有几个类是从base派生的。 现有代码:基类不是抽象类,所以有基类实例和所有派生类。所有测试都已经完成


要求:现在我想停止基类的实例创建,而不改变/测试所有派生类。如何做到这一点?

使所有的
类构造函数(包括默认构造函数和复制构造函数)私有或受保护。

一个选项是使基的每个构造函数都受保护,因此它们只能由派生类和类本身访问。这将阻止对象本身的实例化,但允许基类的实例化


如果基类没有构造函数,那么只需声明一个不带参数的新的空构造函数。还要确保提供复制构造函数的实现(或保持它未实现且私有),这样自动生成的复制构造函数就不会公开可见。

那么如何创建对象?@Seth:派生类可以调用受保护的基类构造函数。如果它们是私有的,我的意思是。而且我误解了这个问题。
class base {};

class der1 : public base{};
class der2 : public base{};
    ..........
    ..........
class derXXX : public base{};