簡體   English   中英

class B 派生自抽象基礎 class A,我如何在 ZA2F2ED4F8EBC2CBB4C21A2DZ A 中使用 singleton

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM