iacharyya Ответов: 1

Универсальный одноэлементный код в C++


Всем Привет,

Пожалуйста, дайте мне знать, что такое специальность generic singleton ?

Это одноэлементный шаблонный класс ? если да, то в чем заключается трудность создания экземпляра некоторого класса, например класса A {}; с использованием этого универсального одноэлементного шаблона ?

С уважением

Что я уже пробовал:

я создал универсальный одноэлементный шаблонный класс, но столкнулся с трудностями при создании экземпляра некоторого класса, например класса A {}; с использованием этого шаблона.

Richard MacCutchan

О каком шаблоне вы говорите? Пожалуйста, добавьте некоторые правильные детали к вашему вопросу.

Philippe Mori

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

Кстати, синглтон теперь по существу считается анти-паттерном (то есть тем, чего обычно следует избегать). Опять же, вы можете легко найти информацию в интернете.

iacharyya

Ну, Ричард, то, что я имею в виду, приведено ниже :

Ну а то что я сделал ниже :

шаблон & lt;класс T>
класс Синглтон{
частный :
статический экземпляр T *;
Одиночка(){}
Синглтон(const Singleton&);
общественный:
static T* getInstance (); / / создайте новый экземпляр T здесь

Это мой шаблон для универсального Одноэлементного класса.

Теперь, например, для класса А, например :
класс а{
};

Я собираюсь создать экземпляр класса А, который должен быть синглтоном, и я должен использовать этот шаблон Синглтона, например,

тап_п()
{
Singleton< A>:: getInstance (); / / должен создать одноэлементный экземпляр класса //A, используя универсальный шаблон Singleton, который //упоминается выше. Мне нужна помощь здесь, я знаю Синглтон и все связанные с ним вещи / / мой вопрос-это общий синглтонный паттерн, надеюсь, то, что я пытался объяснить / / дает вам ясную картину

}

Richard MacCutchan

Я не думаю, что вы можете сделать это таким образом. Шаблон (и, следовательно, класс) называется Singleton, так что это то, что вы должны объявить в своем коде. Но тип T не имеет никакого значения. Почему бы просто не закодировать его как обычно, поскольку шаблон на самом деле не предлагает ничего полезного.

1 Ответов

Рейтинг:
2

Mahmoud_Gamal

ok singleton class это класс в котором вы можете создать экземпляр только одного объекта всего приложения или службы и иметь частного подрядчика
шаблон как

class Singleton
{
public:
static Singleton * getInstance()
{
  if(single==NULL)
{
  single = new Singleton();
}
return single;
}
private:
Singleton();
// some variable 
static Singleton * single;
} ;


Philippe Mori

Неправильный отступ и некоторые ошибки в коде, такие как неопределенный конструктор.

И реализация здесь очень простая (не многопоточная, утечка памяти, нет шаблона, старый стиль NULL...)

Mahmoud_Gamal

спасибо я исправляю ошибку
у синглтона есть частный конструктор и по крайней мере одна статическая функция, и я просто пишу
шаблон