我正在使用C++(Qt)。擴展具有私有構造函數和析構函數的單例類給出編譯時警告
我正在擴展一個單例類,而一個子類只有靜態方法。 我沒有創建子類的任何實例。 Singleton類的構造函數和析構函數都是私有的,所以我不能訪問它的構造函數和析構函數。
class Singleton
{
private :
Singleton();
~Singleton();
public :
// some methods.
}
class SubClass : public Singleton
{
// There is NO constructor or destructor
public:
// Only some STATIC methods.
}
我使用子類::的getInstance()父,它調用的getInstance()。 我只使用SubClass的靜態方法(所以不需要實例化子類)。
所以我的問題是,我得到的編譯警告 -
「子類:未能生成析構函數,因爲一個基類的析構函數是無法訪問」。
我想擺脫這些警告和 也想知道這是違反單身設計模式的設計?
我想達到什麼目的?
我正在爲應用程序創建一個記錄器。我正在使用第三方庫的記錄器類(QxtCore庫的QxtLogger)。這個QxtLogger類是一個單例,具有私有的構造函數和析構函數。我想要一個包含QxtLogger具有的所有方法的單例類以及一些額外的靜態方法(這些方法對我的應用程序是特定的)。
所以我創建了一個繼承QxtLogger的類,並在其中添加了一些靜態方法。我擔心的是擴展生成警告的單例類(因爲基類構造函數和析構函數不可訪問)。 那我該怎麼辦?
'virtual〜Singleton();' – Feo
應該基類的dtor保護嗎?如'protected:virtual〜Singleton();' – rt2800
當你僅僅向子類添加靜態方法時,爲什麼你想要繼承這個單例?除了你的問題,這種情況似乎沒有多大意義。你意識到可以直接調用子類而不需要實例嗎? – Raam