На Джоне site он thisvery элегантного дизайна одиночки в C#, который выглядит следующим образом:Как написать синглтон Jon Skeet в C++?
public sealed class Singleton
{
Singleton()
{
}
public static Singleton Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{
}
internal static readonly Singleton instance = new Singleton();
}
}
мне было интересно, как можно было бы кодировать эквивалент в C++? У меня есть это, но я не уверен, имеет ли он на самом деле те же функции, что и у Джона. (Кстати, это всего лишь пятничное упражнение, которое не нужно ни для чего особого).
class Nested;
class Singleton
{
public:
Singleton() {;}
static Singleton& Instance() { return Nested::instance(); }
class Nested
{
public:
Nested() {;}
static Singleton& instance() { static Singleton inst; return inst; }
};
};
...
Singleton S = Singleton::Instance();
не должен физические упражнения будут размещены Я не знаю, понедельник? Почему в пятницу?
Я бы подумал, что людям есть чем заняться в выходные, кроме как больше работы–Вы ищете родной язык C++ или C++/CLI? Я считаю, что правила инициализации типа совершенно разные для родного C++, поэтому я не ожидал, что тот же трюк будет работать. Только для записи это была не моя собственная идея - она была ущипнута от кого-то еще, хотя я не могу вспомнить, кто: –
вы также можете спрятать операторы конструктора, деструктора, копирования и присваивания. – hplbsh