2012-04-28 85 views
2

是否可以創建一個只能構建一次的類?如果您嘗試創建其他實例,則會發生編譯時錯誤。單類實例C++

+4

你在找什麼叫做單身。 http://en.wikipedia.org/wiki/Singleton_pattern我必須敦促你,但要非常認真地考慮一個單例對你的應用是否真的有意義。單身人士使用時間的99%,不應該是這樣。 – Corbin 2012-04-28 08:33:22

+0

但是,單例只會爲所有創建查詢返回相同的實例。可能這接收異常更有用。 – 2012-04-28 08:34:01

+0

AFAIK沒有選擇讓這樣的類有編譯時錯誤。但是有一種叫做'Singleton'的流行模式,用於製造這種阻止實例化的類。你可以很容易地谷歌的例子。 – Yarg 2012-04-28 08:35:57

回答

0

爲什麼編譯錯誤?我想,你只需要實現Singleton設計模式。 看here

0

的類只有一個實例被稱爲單類新,

有許多方法來執行。最簡單的顯示如下

class MySingleton 
    { 
    public: 
     static MySingleton& Instance() 
     { 
     static MySingleton singleton; 
     return singleton; 
     } 

    // Other non-static member functions 
    private: 
     MySingleton() {};         // Private constructor 
     MySingleton(const MySingleton&);     // Prevent copy-construction 
     MySingleton& operator=(const MySingleton&);  // Prevent assignment 
    }; 
+0

rafdp問道編譯時錯誤的例子,這不是一個答案。 – Yarg 2012-04-28 08:39:57

+0

@Yarg如果你會嘗試創建MySingleton類的多個實例,那麼這會給編譯錯誤,這是rafdp問的。 – Jaguar 2012-04-28 08:45:00

+0

靜態MySingleton&OtherInstance()如何靜態MySingleton另一個Singleton; return anotherSingleton; }' – Yarg 2012-04-28 08:51:33

4

實例在運行時是動態的。編譯錯誤在編譯時。所以答案是否定的,不可能在任何第二個實例化上得到編譯錯誤。

但是,您可以使用單身人士,但要非常仔細地考慮是否真的需要。