crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Паттерн одиночка не компилится
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 23.7.2012, 11:29
  да да, мне он тоже больше по душе :)
zloiia Дата 23.7.2012, 8:03
 
Цитата(haiflive @ 2.10.2010, 16:00) *
Помогите пожалуйста с паттерном одиночка, не компилируется..
пример взят из книги "Гамма Э., Хелм Р., Джонсон Р. - Приемы объектно-ориентированного проектирования. Паттерны проектирования (2001)(ru)"

class Singleton
{
public:
   static Singleton* Inst();
protected:
   Singleton();
private:
   static Singleton* _inst;

};
Singleton* Singleton::_inst = 0;
Singleton* Singleton::Inst()
{
    if(_inst == 0)
    {
        _inst = new Singleton;
    }
    return _inst;
}


Ошибка при компиляции:

debug/main.o:C:\projects\tests\protopypes\ibs_parser-build-desktop/../../../../Qt/projects/tests/protopypes/ibs_parser/main.cpp:22: undefined reference to `Singleton::Singleton()'


Компилятор mingw-gcc, ОС WIN7-32


Немного с опозданием, но вопрос - почему не стали использовать синглтон Майерса? Как по мне так он проще и заодно потокобезопасен
AD Дата 3.10.2010, 1:58
 
Цитата(MoPDoBoPoT @ 3.10.2010, 0:50) *
Злобный мальчик, шоль?)
А вообще, это явная опечатка, с каждым бывает. На данный момент ТС не может изменить текст даже собственных сообщений, ибо их всего 14.

Это обращение было и к модераторам тоже. Я думаю, что не стоит быть поспешным в названии темы. Пусть соблюдают простейшие правила языка. Я могу понять опечатки в тексте сообщений, но уж тему по-человечески назвать человек просто обязан.
MoPDoBoPoT Дата 2.10.2010, 23:50
  Злобный мальчик, шоль?)
А вообще, это явная опечатка, с каждым бывает. На данный момент ТС не может изменить текст даже собственных сообщений, ибо их всего 14.
AD Дата 2.10.2010, 23:33
  Блин, люди. Предлагаю штрафовать тех, кто даже в названии темы не может соблюсти элементарные правила грамматики. Прошу поправить название темы. Орфографическая ошибка в слове "паттерн".
BRE Дата 2.10.2010, 22:41
 
Цитата(haiflive @ 2.10.2010, 17:17) *
Странно что в "Такой книге" ничего про это не сказанно.. может с тех времён компиляторы изменились или когда переводили на русский ошиблись?..

В таких книгах это само собой разумеющееся, т.е. предполагается что читатель уже знает C++. :)
haiflive Дата 2.10.2010, 16:17
  Объявление конструктора помогло, спасибо..

Странно что в "Такой книге" ничего про это не сказанно.. может с тех времён компиляторы изменились или когда переводили на русский ошиблись?..

Всем спасибо тему можно закрыть.
MoPDoBoPoT Дата 2.10.2010, 16:01
  Кстати, на форуме есть тема про одиночку, где все достаточно хорошо расписано.
BRE Дата 2.10.2010, 15:53
  Так конструктор декларирован, но не реализован.
Сделай хотя бы так:
class Singleton
{
public:
   static Singleton* Inst();

protected:
   Singleton() {}

private:
   static Singleton* _inst;

};

haiflive Дата 2.10.2010, 15:21
  Не помогло. :(

Компилятор явно не указывает на какие-либо ошибки, ошибка в этой строке
        _inst = new Singleton;

Но что здесь не так не могу понять, почему не компилируется?

Вобще они и так были разделены.. Но всёравно спасибо, я как-то не задумывлся раньше об этом, всегда разделял..
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 17:48