2014-10-19 28 views
0

我有一個方法返回一個單例。例如,我習慣於將單例賦值給本地作用域變量名稱。有沒有辦法給本地範圍內的單身人士分配一個名字?

UIApplication *application = [UIApplication sharedApplication]; 

但是在C++中做類似的事情會導致創建一個新的對象。

Window window = Window::getSingleton(); 

這是因爲拷貝構造函數被調用,在這種情況下Window(Window const &windowCopy)

有沒有辦法解決這個問題,或者當我需要與它進行交互時,我必須始終調用我的單例方法嗎?

回答

5

在C++中,

Window window = <some expression> 

裝置沿着從<some expression>值「構造Window類型的對象線的東西。Window::getSingleton()計算爲左值參考Window,以及可以用來初始化一個新Window對象(除了一個事實,即Window是不可複製施工的。)

你需要做的是指在Window::getSingleton()函數創建的靜態對象是什麼。函數本身返回一個參考。所有你需要做的我s在LHS上使用對Window的引用:

Window& window = Window::getSingleton(); 
    ^
+0

那麼簡單。不習慣從'C'時代放置的參考符號。 – 2014-10-19 09:24:33

+1

@MorganWilde C沒有引用,但C++使用'&'符號來表示引用類型。這與操作符'&'的地址完全無關,它經常被困惑。 – juanchopanza 2014-10-19 09:28:03

相關問題