2010-07-15 59 views
11

Tôi đã xem xét xung quanh, tôi cần một ví dụ cho lớp Singleton hoạt động trên 2 hoặc nhiều tệp C++/CLI.Ví dụ Singleton trong C++/CLI?

Làm thế nào để bạn khai báo một singleton trong C++/CLI, chứ không phải C#?

Làm cách nào để bạn chia sẻ singleton đó qua hai hoặc nhiều tệp C++/CLI?

Tôi tiếp tục nhận định nghĩa lại biến khi tôi cố gắng chia sẻ đĩa đơn đó.

+0

Bạn sẽ phải cụ thể hơn. Liệu nó cần khởi tạo lười biếng? Liệu nó cần phải được thread an toàn? Xử lý được yêu cầu? –

+0

Bất kỳ ví dụ ... không có cho C++. NET singleton. Tôi nhận được lỗi định nghĩa lại, cần phải được quản lý, nhưng lớp đã được byref, tôi nhận được nhu cầu ";" trước "}", tôi cũng nhận được nhu cầu ":" sau biến. – buttercup

+0

Tôi sẽ đưa ra câu hỏi này một tuần hoặc lâu hơn. Nếu không có câu trả lời, tôi sẽ đặt một tiền thưởng cho câu hỏi này ... Đây là câu hỏi gần như không thể với 0 giải pháp có sẵn trên Internet. – buttercup

Trả lời

15

này là dành cho C++/CLI, không phải "NET Managed Extensions cho C++" aka NET C++.. Không sử dụng các phần mở rộng được quản lý (Visual Studio 2002-2003), chúng là lỗi.

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; } } 
}; 

Đối với "trên nhiều tập tin", đơn vị biên dịch khác trong cùng một dự án sử dụng #include, hội khác sử dụng một tài liệu tham khảo (hoặc #import). Sau đó, sẽ không có bất kỳ vấn đề định nghĩa lại nào.

+0

Và làm thế nào để bạn gọi nó? – marsh