2010-03-11 48 views
11

谷歌的結果表明,有超過1單身模板/基類在助推,你建議哪一個?您選擇BOOST中的哪個Singleton庫?

+11

單身是邪惡的。他們只是一個政治正確僞裝的全球變數! – Tronic 2010-03-11 15:36:58

+0

爲了給這個背景,賈爾夫把它放好,例如,這裏:http://stackoverflow.com/questions/86582/singleton-how-should-it-be-used/761711#761711(我認爲他詳細闡述了更多的地方,但現在找不到它)。 – 2010-03-11 15:53:46

+2

@gf:我認爲我現在已經在至少十幾個不同的問題中說明了這一點。 ;)在這裏(http://stackoverflow.com/questions/1020312/are-singletons-really-that-bad/1020384#1020384)是另一個。根據他的博客,顯然我也將GMan轉換爲我的觀點:(http://blackninjagames.com/?p=24),但無法找到它現在基於的線程。 :)所以是的,雖然它可能不會回答OP的問題,但我會說「不要在提升中使用任何單例類」。 :) – jalf 2010-03-11 17:47:53

回答

8

您不應該在boost中使用單例,它們僅用於內部目的(請參閱單獨libes的「detail」文件夾)。這就是爲什麼你沒有在boost網站上公開的Singleton庫。

單例類很容易實現,但有很多變體在特定情況下很有用,所以你應該使用一些適合你認爲單例應該表現的東西。

現在,還有其他圖書館提供單身人士,最通用的是Loki。但它可能打擊你的心;)


更新:現在,是爲了提供非全局單(有選項,以使全球,迫使你有明確的創建提出了圖書館稱爲奇異)和物體的破壞點。

見審查要求:http://boost.2283326.n4.nabble.com/Review-Request-Singularity-tt3759486.html

一些提升開發者似乎考慮使用它,而不是一些黑客,但C++ 11使得makeing類辛格爾頓比以前多,這將取決於審查更容易。

1

我升壓的版本有以下singleton.hpp標題:

C:\boost_1_38_0\boost\pool\detail\singleton.hpp 
C:\boost_1_38_0\boost\serialization\singleton.hpp 
C:\boost_1_38_0\boost\thread\detail\singleton.hpp 

我沒有使用任何這些,但我可能會在詳細目錄中的人望而卻步。

無論如何,http://torjo.com/tobias/index.html#boost_utility_singleton.reference.singleton看起來像一個使用,但它似乎不是真正的一部分增強(尚未接受呢?)。