【发布时间】:2022-01-15 15:59:41
【问题描述】:
下面是演示代码:
class A {
public:
A(){}
virtual void method()=0;
//....
virtual ~A(){};
}
class B : public A{
static A * ptr;
//....
public:
//....
static A* GetInstance() {
if (ptr == nullptr)
ptr = new B(); // error, currently B is an abstract class, it has not been constructed
return ptr;
}
//.....
}
类 B 派生自抽象基类 A,我如何在 B 类中使用单例?
【问题讨论】:
-
战术说明:查看Meyers Singleton 以获得更安全且通常更容易实现单例的方法。但是要多考虑一下你是否想要一个单身人士。它基本上是一个封装在类中的全局变量,而全局变量往往以简化代码的名义使代码复杂化。您必须管理这样一个事实,即任何人都可以随时更改全局而几乎没有可追溯性;调试时,一切都可能产生意想不到的副作用..