Ответ 1
Это для С++/CLI, а не ".NET Managed Extensions for С++", иначе С++. NET. Не используйте Managed Extensions (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
). Тогда не будет никаких проблем с переопределением.