Форум программистов, компьютерный форум CyberForum.ru

Что же от меня хотят? :] - C++

Восстановить пароль Регистрация
 
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
12.10.2009, 23:50     Что же от меня хотят? :] #1
только только разобрался с бинарным деревом и получил вот такое новое задание но что то не совсем понял что от меня требуется :[
может вразумите,подскажите что почитать и тд и тп :]

Write a class that can be created only in a single instance and only by some specific method.

For example this should work:

SingleInstance *pInst = SingleInstance::getInstance();
pInst->someMethod();

And this shouldn't:

SingleInstance *oneInstance = new SingleInstance();
oneInstance->someMethod();

The second call to getInstance() method should return the pointer to the already existing object and do not create a new one.

Hints : private, public, static
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
12.10.2009, 23:57     Что же от меня хотят? :] #2
Паттерн Singleton
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
13.10.2009, 00:19  [ТС]     Что же от меня хотят? :] #3
спасиб
почитаемс
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
13.10.2009, 19:52  [ТС]     Что же от меня хотят? :] #4
вот почитал придумал вот такую штуку верно ? или еще что то надо?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <vector>
using namespace std;
class CSingleton
{
public:
    static CSingleton* GetInstance (int);
    static void DestroyInstance (void) { if (m_instance) delete m_instance;} ;
private:
    static CSingleton* m_instance;
protected:
    CSingleton(){};
};
 
CSingleton* CSingleton::m_instance = NULL;
CSingleton* CSingleton::GetInstance(int)
{
    if (!m_instance) m_instance = new CSingleton;
    cout<<m_instance<<"\n";
    return m_instance;
}
 
int main()  
{  
CSingleton* a=CSingleton::GetInstance(9);
CSingleton* b=CSingleton::GetInstance(5);
    system ("PAUSE");
}
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
13.10.2009, 22:37  [ТС]     Что же от меня хотят? :] #5
ап
люди посмотрите плиз верно задание я сделал или нет :]]
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,315
13.10.2009, 23:20     Что же от меня хотят? :] #6
1. Поясни, зачем нужен аргумент int в функции CSingleton::GetInstance ?
2. Зачем у тебя функция CSingleton:estroyInstance ? Ты же ее нигде не используешь. А память в main() у тебя утечет. За такое бьют
3. Ну и наконец, про сигнлтон Мейерса ты читал?
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
13.10.2009, 23:54  [ТС]     Что же от меня хотят? :] #7
ну DestroyInstance функция просто по умолчанию была там где я про "одиночку " читал.
Паттерн сигнлтон читал, что понял то и изобразил :]]
если int убираю то не хочет запускать, компилятор ругается :]
может подскажете как подправить?
но я честно в с++ совсем зеленый
я механик а нам пихнули этот С вот теперь до диплома не допускают пока С ++ не сдам :[[
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,315
14.10.2009, 10:33     Что же от меня хотят? :] #8
Цитата Сообщение от ILJON Посмотреть сообщение
я механик а нам пихнули этот С вот теперь до диплома не допускают пока С ++ не сдам :[[
Хм, занятно, а почему же тогда задание по-английски изложено???
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
14.10.2009, 11:47  [ТС]     Что же от меня хотят? :] #9
я учусь в Эстонии, поэтому у нас задания могут на эстонском и на агл язе дать
и лекции на эст язе, что еще осложняет понимание С++
ну народ подсобите как быть с тем что я "нацарапал" очень надо
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,315
14.10.2009, 12:12     Что же от меня хотят? :] #10
Ты написал почти все правильно, и, с учетом того, что ты только учишься и это видимо непрофильный предмет, это замечательно! Я немного подрихтовал твой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <cstdlib>
using namespace std;
 
class CSingleton
{
public:
        static CSingleton* GetInstance()
        {
            if (!m_instance) m_instance = new CSingleton;
            cout << m_instance << endl;
            return m_instance;
        }
 
        static void DestroyInstance()
        {
            delete m_instance;
            m_instance = NULL;
        };
 
private:
        static CSingleton* m_instance;
 
protected:
        CSingleton() {};
        CSingleton(const CSingleton&) {};
        CSingleton& operator=(const CSingleton&) {};
};
 
CSingleton* CSingleton::m_instance = NULL;
 
int main()
{
    CSingleton* a = CSingleton::GetInstance();
    CSingleton* b = CSingleton::GetInstance();
    system("PAUSE");
    CSingleton::DestroyInstance();
}
Удачи!
АНК
124 / 115 / 2
Регистрация: 27.02.2007
Сообщений: 291
14.10.2009, 15:01     Что же от меня хотят? :] #11
CheshireCat, простите, но Вы тут, по-моему, допустили неточность. main() должен завершаться по другому
C++
1
2
3
4
5
6
7
8
9
int main()
{
    CSingleton* a = CSingleton::GetInstance();
    CSingleton* b = CSingleton::GetInstance();
    system("PAUSE");
    a->DestroyInstance();
    b->DestroyInstance();
    //CSingleton::DestroyInstance();
}
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,315
14.10.2009, 15:13     Что же от меня хотят? :] #12
В чем именно заключается неточность?
АНК
124 / 115 / 2
Регистрация: 27.02.2007
Сообщений: 291
14.10.2009, 15:27     Что же от меня хотят? :] #13
Цитата Сообщение от CheshireCat Посмотреть сообщение
В чем именно заключается неточность?
Удаление созданных объектов.
C++
1
2
    a->DestroyInstance();
    b->DestroyInstance();
а не
C++
1
    CSingleton::DestroyInstance();
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,315
14.10.2009, 15:54     Что же от меня хотят? :] #14
Нет, здесь неточности нет. Обрати внимание - синглтон (он потому и синглтон) гарантированно создается в единственном экземпляре, и не содержит счетчика ссылок. (А вот если бы содержал - то да, на каждый вызов GetInstance надо было бы заводить парный ему Destroy.) А сейчас - достаточно вызвать DestroyInstance единственный раз при завершении программы - единственный объект будет разрушен. И это статический метод, поэтому не требует указания, для какого именно объекта он вызывается.
Хотя это тоже не очень красивое решение, но - это исходный код топикстартера с минимальной правкой.
ILJON
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
14.10.2009, 15:59  [ТС]     Что же от меня хотят? :] #15
Ребята всем огромное спасибо за потраченное время.
Эту работу защитил даже со своим кодом :]]]] (прям самооценка выросла
отдельноe спасиб СheshireCat
препод поговорил со мной наверно как программист с механиком задал пару вопросов и зачел домашку :] но расслабляться пока рано, на носу еще две висят, так что на форум я еще с вопросиками наверно загляну к вам :]
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2009, 16:10     Что же от меня хотят? :]
Еще ссылки по теме:

что у меня не правильно? (не получается вывести 2 массива) C++
C++ Просьба проверить програмку. Что то у меня не получается с циклом
C++ Создание обьекта_ у меня что-то с синтаксом?
Что такое перегрузка оператора? Что у меня в коде за ошибка? C++
C++ Не понял, что от меня хотят

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
АНК
124 / 115 / 2
Регистрация: 27.02.2007
Сообщений: 291
14.10.2009, 16:10     Что же от меня хотят? :] #16
Цитата Сообщение от CheshireCat Посмотреть сообщение
Обрати внимание - синглтон (он потому и синглтон) гарантированно создается в единственном экземпляре, и не содержит счетчика ссылок.
Точно!
Delphi
1
2
            if (!m_instance) m_instance = new CSingleton;
            cout << m_instance << endl;
Вот это как-то выпало из моего внимания. а и b один и тот же объект... Спасибо.
Yandex
Объявления
14.10.2009, 16:10     Что же от меня хотят? :]
Ответ Создать тему
Опции темы

Текущее время: 00:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru