Пример Singleton в С++/CLI?

Я огляделся, мне нужен пример для класса Singleton, который работает через 2 или более файлов С++/CLI.

Как вы объявляете singleton в С++/CLI, а не С#?

Как вы делитесь этим одноэлементом через два или более файлов С++/CLI?

Я продолжаю получать переменные переопределения, когда я пытаюсь использовать этот синглтон.

Ответ 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). Тогда не будет никаких проблем с переопределением.