[英]We use inheritance when A (derived class) “is a” B (base class). What do we do when A “can be” B or C?
[英]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,我如何在 ZA2F2ED4F8EBC2CBB4C21A2DZ A 中使用 singleton
您必須在 class B 中實現您的方法 1。這不是 Singleton 的問題。 問題是,您不能創建抽象 class 的實例。 您的 class B 是抽象的,因為並非所有純虛擬方法都在 class B 中實現。
或執行以下操作:
class A實現:public A
在 AImplement 內部,您實現了您的方法 1,因此 AImplement 變得不抽象。
現在,您可以在 class B 中創建 AImplement。
並且不要從 A 導出 B。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.