2010-07-15 39 views
11

我環顧四周,我需要一個適用於跨越2個或更多C++/CLI文件的Singleton類的示例。C++/CLI中的單例實例?

如何在C++/CLI中聲明單例,而不是C#?

如何跨兩個或多個C++/CLI文件共享該單身人士?

當我試圖分享那個單身人士時,我總是收到變量重定義。

+0

你將不得不更加具體。它需要延遲初始化嗎?它是否需要線程安全?需要處置嗎? – 2010-07-15 19:50:54

+0

任何示例... C++ .NET單例都沒有。我得到重新定義的錯誤,需要管理,但班級已經byref,我得到需要「;」之前「}」,我也得到需要「:」變量後。 – buttercup 2010-07-15 20:04:26

+0

我會在一個星期左右給出這個問題。如果沒有答案,我會在這個問題上給予賞金......在互聯網上有0個解決方案,這幾乎是不可能的問題。 – buttercup 2010-07-25 03:34:05

回答

15

這是C++/CLI,而不是 「.NET C++託管擴展」 又名C++。NET。不要使用託管擴展(Visual Studio 2002-2003),它們是錯誤的。

ref class Singleton 
{ 
private: 
    Singleton() {} 
    Singleton(const Singleton%) { throw gcnew System::InvalidOperationException("singleton cannot be copy-constructed"); } 
    static Singleton m_instance; 

public: 
    static property Singleton^ Instance { Singleton^ get() { return %m_instance; } } 
}; 

至於「在多個文件」,其他編譯單元在同一項目中使用#include,其他組件使用的引用(或#import)。那麼就不會有任何重新定義問題。

+0

你怎麼稱呼它? – marsh 2017-02-14 14:19:05