Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
donandreyka
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 24
#1

Паттерн Singleton - C++

22.05.2016, 20:03. Просмотров 166. Ответов 6
Метки нет (Все метки)

Здравствуйте. Например есть класический одиночка и загрузка музыки. Возможно ли сделать загрузку и вопроизведение музыки через класс одиночка? Если да подскажите пожалуйста как.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Singleton
{
private:
    static Singleton * p_instance;
    // Конструкторы и оператор присваивания недоступны клиентам
    Singleton() {
    }
 
    
    Singleton(const Singleton&);
    Singleton& operator=(Singleton&);
public:
    static Singleton * getInstance() {
        if (!p_instance)
            p_instance = new Singleton();
        return p_instance;
    }
 
};
Singleton* Singleton::p_instance = 0;
C++
1
2
3
Music music;//создаем объект музыки
music.openFromFile("music.ogg");//загружаем файл
music.play();//воспроизводим музыку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2016, 20:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Паттерн Singleton (C++):

Паттерн Singleton - C++
Мне вот дали такой код как паттерн Singleton: #include "stdafx.h" template <class T> class SingletonS { static int...

Singleton. Одиночка. Паттерн - C++
Как реализовать паттерн Singleton на C++? Делаю так: Заголовочный файл: class Play { private: Play(void); ~Play(void);

Что значит Singleton& operator = ( Singleton& )? - C++
// Singleton.h class Singleton { private: static Singleton * p_instance; // Конструкторы и оператор присваивания...

Реализация Singleton - C++
Приветствую. Пытался реализовать паттерн проектирования Singleton для лога след. образом: class Logger { public: void...

Singleton и MVC - C++
Здравствуйте уважаемые форумчане. Изучаю с++ и столкнулся с понятием паттернов и парадигмы MVC. Прочитав про паттерны и погуглив не...

Singleton и DLL - C++
DLL .h class EXPORT LOG { public: LOG() { x = this; } void test();

6
std_cpp
0 / 0 / 1
Регистрация: 10.05.2016
Сообщений: 6
22.05.2016, 20:20 #2
donandreyka, почему нет-то? Можно все. Паттерн "Singletone" предназначен для создания всего лишь одного объекта класса. А что этот класс делает - другой вопрос.
0
donandreyka
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 24
22.05.2016, 20:27  [ТС] #3
Можете накинуть пример небольшой? Не могу понять как правильно реализовать.
0
avgoor
915 / 550 / 119
Регистрация: 05.12.2015
Сообщений: 1,531
22.05.2016, 20:40 #4
donandreyka,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Singleton
{
private:
    static Singleton * p_instance;
    // Конструкторы и оператор присваивания недоступны клиентам
    Singleton() {
    }
 
    
    Singleton(const Singleton&);
    Singleton& operator=(Singleton&);
public:
    static Singleton * getInstance() {
        if (!p_instance)
            p_instance = new Singleton();
        return p_instance;
    }
    Music music;
};
Singleton* Singleton::p_instance = 0;
 
Singleton::getInstance()->music.openFromFile("...
0
donandreyka
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 24
22.05.2016, 20:56  [ТС] #5
avgoor,
Цитата Сообщение от avgoor Посмотреть сообщение
Singleton::getInstance()->music.openFromFile("...
компилятор ругается на эту строчку "объявление не совместимо с Singleton..."
0
avgoor
915 / 550 / 119
Регистрация: 05.12.2015
Сообщений: 1,531
22.05.2016, 21:14 #6
Цитата Сообщение от donandreyka Посмотреть сообщение
компилятор ругается на эту строчку
Рекомендую подучить основы синтаксиса, если подобные вещи вам необходимо разжевывать:
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
#include <iostream>
 
class Music
{
public:
    void openFromFile(char *) { std::cout << "OK" << std::endl; };
};
 
class Singleton
{
private:
    static Singleton * p_instance;
    // Конструкторы и оператор присваивания недоступны клиентам
    Singleton() {
    }
 
 
    Singleton(const Singleton&);
    Singleton& operator=(Singleton&);
public:
    static Singleton * getInstance() {
        if (!p_instance)
            p_instance = new Singleton();
        return p_instance;
    }
    Music music;
};
Singleton* Singleton::p_instance = 0;
 
int main()
{
    Singleton::getInstance()->music.openFromFile("file.ogg");
}
0
donandreyka
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 24
22.05.2016, 21:52  [ТС] #7
avgoor, Да в синтаксисе я слабоват, но спасибо большое помогли разобраться.
0
22.05.2016, 21:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2016, 21:52
Привет! Вот еще темы с ответами:

Singleton vs static class - C++
Зачем этот синглтон, если его можно представить как класс с статическими полями и методами. Какой случай я упускаю?

Насчёт шаблонного паттерна SingleTon - C++
Есть код паттерна template&lt;class T&gt; class Singleton { private: static T* ptr; protected: Singleton();

Масштабирование системы при использовании паттерна Singleton - C++
Добрый день, как доказать или опровергнуть, что архитектура теряет гибкость и расширяемость при активном использовании паттерна Singleton.

Паттерн Embedded Value - C++
Доброго времени суток, вопрос по паттерну Embedded Value (объединенное свойство). Это тема моей курсовой, нашел про него немного теории, да...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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