class B 派生自抽象基础 class A,我如何在 class B 中使用单例?
class B derived from an abstract base class A, and how can i use singleton in class B?
下面是演示代码:
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;
}
//.....
}
class B 派生自抽象基础 class A,我如何在 class B 中使用单例?
你必须在 class B 中实现你的 method1。
这不是单例的问题。问题是,您不能创建抽象 class 的实例。你的classB是抽象的,因为并不是所有的纯虚方法都在classB.
中实现
或执行以下操作:
class 实现:public A
在AImplement内部,你实现了你的method1,这样AImplement就不抽象了。
现在,您可以在 class B.
中创建 AImplement
并且不要从 A 派生 B。
下面是演示代码:
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;
}
//.....
}
class B 派生自抽象基础 class A,我如何在 class B 中使用单例?
你必须在 class B 中实现你的 method1。 这不是单例的问题。问题是,您不能创建抽象 class 的实例。你的classB是抽象的,因为并不是所有的纯虚方法都在classB.
中实现或执行以下操作:
class 实现:public A
在AImplement内部,你实现了你的method1,这样AImplement就不抽象了。
现在,您可以在 class B.
中创建 AImplement并且不要从 A 派生 B。