Eng*_*ain 2 c++ inheritance singleton design-patterns extend
我正在使用 C++ (Qt)。
我正在扩展一个单例类,而一个子类只有静态方法。我没有创建子类的任何实例。Singleton 类的构造函数和析构函数都是私有的,所以我无法访问它的构造函数和析构函数。
class Singleton
{
private :
Singleton();
~Singleton();
public :
// some methods.
}
class SubClass : public Singleton
{
// There is NO constructor or destructor
public:
// Only some STATIC methods.
}
Run Code Online (Sandbox Code Playgroud)
我使用调用父类的 getInstance()的SubClass::getInstance()。我只使用 SubClass 的静态方法(所以不需要实例化 SubClass)。
所以我的问题是,我在编译时收到警告 -
“无法生成子类:析构函数,因为无法访问基类析构函数”。
我想摆脱这些警告,还想知道这个设计是否违反了单例设计模式?
我想实现什么?
我正在为应用程序创建一个记录器。我正在使用第三方库的记录器类(QxtCore 库的 QxtLogger)。这个 QxtLogger 类是一个单例,具有私有的构造函数和析构函数。我想要一个包含 QxtLogger 拥有的所有方法和一些额外的静态方法(特定于我的应用程序)的单例类。
因此,我创建了一个继承 QxtLogger 的类并为其添加了一些静态方法。我担心的是扩展生成警告的单例类(因为基类构造函数和析构函数不可访问)。所以我该怎么做?
您不能扩展没有可见构造函数的类。这就是班级设计者的意图。
如果他们想要扩展类,他们会创建 constructor/destructor protected。
我建议你使用组合而不是继承。