2010-08-26 45 views
2

我的公司不允許使用boost(出於許多愚蠢的原因,但這是脫離主題)。在VC++中,boost :: shared_ptr有一個本地/可靠的替代方案嗎?

當我用於個人發展的shared_ptrweak_ptrscoped_ptr時,我感到非常沮喪,不得不使用原始指針。

我們正在與微軟編譯器(Visual Studio 2010)完全合作,我想知道是否有替代那些可以減輕我痛苦的模板。

我曾經聽說std::tr1,但我不確定這是什麼。我相信這是下一個標準的某種微軟實現,但我們可以依靠它嗎?它提供了什麼?有任何保證嗎?應包含哪些標題?

+0

恩,雖然助推器和stl是非常非常好的車輪,我們應該努力避免重新發明 - 並且有很多話要說使用標準化的智能指針 - 它們是真的不難做出。 – 2010-08-26 12:47:57

+2

@Chris Becke:如果沒有其他解決方案,我將不得不做我的最後是的。但是,如果有什麼方法可以用人們比我更聰明的方式來使用,我想知道如何;) – ereOn 2010-08-26 12:49:48

+0

請不要逗我們'(爲了很多愚蠢的原因,但這是脫離主題)「!: - )我,一個人,會喜歡知道愚蠢的原因! – Sam 2010-08-26 12:58:38

回答

7

隨着VC10只使用它已經提供的shared_ptr,weak_ptrunique_ptr實現。你所要做的就是包含<memory>

+0

謝謝,它似乎工作(儘管我必須指定'std :: tr1'而文檔指出'shared_ptr'在'std'中)。當下一個'C++'將由微軟實施時會發生什麼。他們會突然放棄對'tr1'的支持嗎?我應該使用命名空間的別名嗎? – ereOn 2010-08-26 12:57:38

+0

@ereOn:這很奇怪,我在VC10中使用'std :: shared_ptr'沒有任何問題 - 應該不需要解決方法。 – 2010-08-26 13:02:29

+0

我正在使用命令行進行編譯,使用「本地優化的」makefiles ...如果某人以某種方式禁用了常用makefile中的某些功能,我不會感到驚訝。或者它也許還在使用VC8編譯器。有沒有辦法將'std :: tr1'帶入'std'? (它甚至是個好主意嗎?) – ereOn 2010-08-26 13:05:39

4

TR1是技術報告1的簡稱,是標準委員會對C++標準新功能的推薦。看看標題(或其他包含的標題)。如果VS2010實現了TR1,那麼您很有可能擁有tr1智能指針。這些應該與Boost智能指針相同。

+0

感謝您的亮點。的確,它似乎提供了'shared_ptr'。 – ereOn 2010-08-26 12:58:23

相關問題