Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
donandreyka
0 / 0 / 2
Регистрация: 18.12.2013
Сообщений: 24
#1

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

22.05.2016, 20:03. Просмотров 223. Ответов 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
Мне вот дали такой код как паттерн Singleton: #include "stdafx.h" template...

Singleton. Одиночка. Паттерн
Как реализовать паттерн Singleton на C++? Делаю так: Заголовочный файл: ...

Что значит Singleton& operator = ( Singleton& )?
// Singleton.h class Singleton { private: static Singleton *...

Singleton
Буду краток. Пропустил пару по Singleton( это только первое занятие было по...

Реализация Singleton
Приветствую. Пытался реализовать паттерн проектирования Singleton для лога...

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

6
std_cpp
0 / 0 / 2
Регистрация: 10.05.2016
Сообщений: 6
22.05.2016, 20:20 #2
donandreyka, почему нет-то? Можно все. Паттерн "Singletone" предназначен для создания всего лишь одного объекта класса. А что этот класс делает - другой вопрос.
0
donandreyka
0 / 0 / 2
Регистрация: 18.12.2013
Сообщений: 24
22.05.2016, 20:27  [ТС] #3
Можете накинуть пример небольшой? Не могу понять как правильно реализовать.
0
avgoor
1007 / 601 / 156
Регистрация: 05.12.2015
Сообщений: 1,686
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 / 2
Регистрация: 18.12.2013
Сообщений: 24
22.05.2016, 20:56  [ТС] #5
avgoor,
Цитата Сообщение от avgoor Посмотреть сообщение
Singleton::getInstance()->music.openFromFile("...
компилятор ругается на эту строчку "объявление не совместимо с Singleton..."
0
avgoor
1007 / 601 / 156
Регистрация: 05.12.2015
Сообщений: 1,686
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 / 2
Регистрация: 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 и MVC
Здравствуйте уважаемые форумчане. Изучаю с++ и столкнулся с понятием паттернов...

Singleton vs static class
Зачем этот синглтон, если его можно представить как класс с статическими полями...

Насчёт шаблонного паттерна SingleTon
Есть код паттерна template&lt;class T&gt; class Singleton { private: ...

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


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

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

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