我可以创建singleton子类吗
Can I create singleton child class?
我有一个父类:
class ParentClass {
public:
~ParentClass(){}
static ParentClass &getInstance() {
static ParentClass instance;
return instance;
}
void methodA() {
//do some stuff
}
void methodB() {
//do some stuff
methodA();
//do some stuff
}
private:
ParentClass(){}
}
我想创建子类:
class ChildClass : public ParentClass {
public:
ChildClass(){}
~ChildClass(){}
methodA() {
//do some stuff
}
}
此代码存在一些明显的问题。首先,我不能用这种方式创建ChildClass
(父级的构造函数是私有的)。而且似乎ChildClass
不能直接继承自ParentClass
。这些类非常相似。我不想创建这些类的两个类似副本。
也许我可以为ParentClass
和ChildClass
创建一个基类。我不确定,但是否存在从singleton创建子项的方法?
因此,我看不出有什么好的理由让methodA
和methodB
在其中。特别是没有人可以创建ParentClass
类型的对象,因此不能调用methodA
和methodB
(除非它们也变为静态)。我认为更好的OOD是只使用getInstance()
方法创建singleton,并单独创建ParentClass
,其中包含对singleton返回的对象的引用:
class SingletonClass {
public:
~SingletonClass (){}
static SingleInstanceClass &getInstance() {
static SingleInstanceClass instance;
return instance;
}
private:
SingletonClass (){}
}
class ParentClass {
public:
ParentClass(SingleInstanceClass& ref);
~ParentClass(){}
virtual void methodA() {
//do some stuff
}
void methodB() {
//do some stuff
methodA();
//do some stuff
}
private:
SingleInstanceClass& singInstRef;
}
然后
class ChildClass : public ParentClass {
public:
ChildClass(SingleInstanceClass& ref) : ParentClass (ref){}
~ChildClass(){}
virtual void methodA() {
//do some stuff
}
}
相关文章:
- 继承期间显示未知行为的子类
- 通过指向指针数组的指针访问子类的属性
- 从父类方法返回子类对象
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 将父类对象强制转换为子类的问题
- 避免在C++中重复子类定义
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 如何初始化矢量的模板化子类
- C++ 继承:将子类传递给需要基类的函数并获取子类行为
- 有没有办法按值将纯抽象类的所有子类传递给 C++ 中的函数?
- 使用子类覆盖基类中定义的函数
- 子类地址等于虚拟基类地址?
- 将子类方法声明为基类的友元
- C++子类共享变量?
- 如何检查模板专用化是否是基本模板的子类?
- 仅让特定类'Fabric'构造类'Foo'及其所有子类的实例
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- Singleton子类构造函数错误
- 一个正则类在c++中怎么可能有一个singleton子类
- 我可以创建singleton子类吗