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

Синглтон - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Алгоритм быстрой сортировки не работает с большим количеством чисел http://www.cyberforum.ru/cpp-beginners/thread965204.html
Требовалось написать программу с алгоритмами сортировки, затем сравнить эти алгоритмы (но проблема не в этом). Все работает, кроме быстрой сортировке. Ввожу размер массива 77, все сортируется во всех алгоритмах, ввожу 78 и выше, зависает именно на быстрой сортировке и завершается((( В чем проблема можеть быть? Вот, собственно, код. #include <iostream> #include <stdlib.h> #include <ctime>...
C++ Общие символы для двух строк(своего класса) через перегрузку оператора Создать свой строковый класс, добавить функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. Например, результатом пересечения строк "sdqcg" "rgfas34" будет строка "sg". Для реализации функции перегрузить оператор * (бинарное умножение). Вот что у меня получилось(выдает ошибку нарушение прав доступа): #include <iostream> #include <string>... http://www.cyberforum.ru/cpp-beginners/thread965189.html
C++ C++ Очередь
Предисловие к заданию: Определить структуру очереди и разработать функции, которые необходимы для работы с заданным контейнером: функция складывания элемента push(память выделять динамически), функцию извлечения элемента pop, функцию печати содержимого контейнера на экран, функцию удаления контейнера. Задание: Создать программное приложение, в котором создается контейнер и заполняется...
Дано число, найти максимальную цифру и количество простых цифр C++
Есть базовый класс. В нем определена вирт функция со следующей реализацией: для введенного числа она ищет самую большую цифру числа и возвращает на выходе. Есть производный класс, в котором реализация этой вирт функции следующая, она ищет количество цифр числа, являющего простыми числами т.е. вводим число с клавы - допустим 145279(3 простых числа - 2,5,7.): Введите число -> 145279...
C++ Ряд Тейлора http://www.cyberforum.ru/cpp-beginners/thread965174.html
Написати прогу нахождения приближенного значения функции y=f(x) используя ее расписание в ряд Тейлора. exp(x)=1+x/1!+pow(x,2)/2!+...+pow(x,n)/n!; Помогите. Заранее спасибо)
C++ Определить, сколько точек пересечения имеют прямая и окружность и найти координаты этих точек Привет. Тут такое дело. В общем я неплохо знаю сам язык, но вот задачку решить не могу. Т.е не знаю как. С школьной математикой у меня беда. Помогите пожалуйста. Даны прямая и окружность, заданные уравнениями у=кх+b и (х-а)2+(у-b)2=r2. Определить, сколько точек пересечения имеют прямая и окружность и найти координаты этих точек. подробнее

Показать сообщение отдельно
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
29.09.2013, 20:58     Синглтон
есть базовый класс Singleton и производный от него Logger, все вроде бы хорошо работает при создании 1 объекта, но появилась необходимость создания нескольких логов которые бы служили для конкретных целей и каждый бы писал в свой собственный файл как это реализовать вот то что сам смог:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#pragma once;
#include<iostream>
 
template<class T>
class Singleton
{
public:
    static T* instance()
    {
        if(!_instance)
            if (destroyed)
                OnDeadReference();
            else
                Create();
        return _instance;
    }
private:
    static void Create()
    {
        
        /*if(!_instance)
            _instance = new T;*/
        /*if (_refcount != MaxLogFiles)
        {*/
            static T obj;
            ++_refcount;
            _instance = &obj;
        /*}
        else
            throw std::runtime_error("Недопустимое количество объектов");*/
        
    }
    static void KillPhoenixSingleton()
    {
        _instance->~T();
    }
    static void OnDeadReference()
    {
        Create();
        new(_instance) T;
        atexit(KillPhoenixSingleton);
        destroyed = false;
    }
    static T* _instance;
    static bool destroyed;
    static int _refcount;
    static const int MaxLogFiles = 3;
protected:
    Singleton(){}
    Singleton& operator = (Singleton&);
    Singleton(const Singleton&);
    virtual ~Singleton()
    {
        std::cout << "destr_singleton_base" << std::endl;
        _instance = 0;
        destroyed = true;
    }
};
 
template<class T>
T* Singleton<T>::_instance = 0;
 
template<class T>
bool Singleton<T>::destroyed = false;
 
template<class T>
int Singleton<T>::_refcount = 0;
логгер
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
#pragma once;
#include"Singleton.h"
#include<fstream>
#include<iostream>
 
class Logger : public Singleton<Logger>
{
 
private:
    std::ofstream log;
 
protected:
    Logger() : Singleton<Logger>(){}
    friend class Singleton<Logger>;
    virtual ~Logger()
    {
        std::cout << "destr_Logger" << std::endl;
        log << "CLOSE_FILE" << std::endl;
        log.close();
    }
 
public:
    void open(const char* name)
    {
        log.open(name);
    }
    void write_to_log(const char* msg)
    {
        log << msg << std::endl;
    }
    
};
main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include"Logger.h"
 
void main()
{
    /*Logger *test = Logger::instance();
    test->open("test.txt");
    test->write_to_log("Hello");*/
    Logger *test2 = Logger::instance();
    test2->open("test2.txt");
    test2->write_to_log("Hello2");
 
    std::system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru