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

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

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

Синглтон для лог файла! - C++

15.03.2014, 13:56. Просмотров 307. Ответов 6
Метки нет (Все метки)

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
#include <iostream>
#include <cmath>
#include <limits>
#include <stdio.h>
#include <math.h>
#include <fstream>
using namespace std;
class pole
{
public:
    static pole * _F;
    char stroka[100];
    char *result;
 
    pole()
    {}
    pole(const pole&);
    pole& operator=(pole&);
     static pole * getInstance() {
        if(!_F)           
            _F = new pole();
        return _F;
    }
    void Stroka()
    {
        cout << "Vvedite stroku "<<endl;
        result=gets(stroka);
    }
    void fail()
        {
        FILE *f=NULL;
        f = fopen("dat.txt", "a+");
        if (f == NULL)
        {
            cout << "no fail ";
            system("pause");
        }
        fprintf(f, "%s", __TIME__); 
        fprintf(f, "%s", " || ");
        fprintf(f, "%s", __DATE__);
        fprintf(f, "%s", " || ");
        
        fprintf(f, "%s",result);
        fprintf(f, "%s", " || ");
        }
 
};
void main()
{   pole::getInstance();
    pole A;
    A.Stroka();
    A.fail();
    pole B;
    B.Stroka();
    B.fail();
    
}
Выводит ошибку не могу с ней разобратся error lnk2001 далее пробовал все раскидать по уму в cpp и h ниже пример второй программы но там синглтон не работает подскажите где косяк мб нерпавильно обращаюсь !
Вложения
Тип файла: rar 5.rar (3.52 Мб, 2 просмотров)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,961
15.03.2014, 14:01     Синглтон для лог файла! #2
В 11 строке объявление статического поля, должно быть еще определение за пределами класса:
pole * pole::_F;

О том, что нельзя начинать имена переменных с подчернкивания и что к синглтону приведенный код не имеет отношения, умолчу.
краб
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 52
15.03.2014, 14:16  [ТС]     Синглтон для лог файла! #3
если не имеет то поделитесь ссылкой где адекватно будет написано как реализовать синглетон пользовался этой ссылкой первым примером http://cpp-reference.ru/patterns/cre...rns/singleton/

Добавлено через 3 минуты
в сpp в проге которая в архиве там все работает без ошибок но почему создются обьекты класса ?
0x10
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,961
15.03.2014, 14:19     Синглтон для лог файла! #4
Цитата Сообщение от краб Посмотреть сообщение
поделитесь ссылкой где адекватно будет написано
По диагонали просмотрел приведенную Вами ссылку - там все в порядке.

Цитата Сообщение от краб Посмотреть сообщение
почему создются обьекты класса ?
Потому что Вы объявили публичные конструкторы и, блин, создаете сами объекты. См строки 50, 53.
краб
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 52
15.03.2014, 14:32  [ТС]     Синглтон для лог файла! #5
сейчас я сделал private коструктор у меня к моему классу нельзя будет в майне создать обьект ,по идее как работает синглетон я создаю пару обьектов класса он это видит и значение первого обьекта приравнивает всем а остальные обьекты даже ни создает
0x10
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,961
15.03.2014, 14:43     Синглтон для лог файла! #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
краб, смотрите внимательно статью, можно почитать что написано в книге GoF.
Вы не должны явно создавать объекты класса. Объект можно получать только путем вызова метода get_instance. За счет этого реализуется контроль за количеством объектов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2014, 14:52     Синглтон для лог файла!
Еще ссылки по теме:

Перегрузка лог. >(Компилятор ругается) C++
C++ Создание лог файла. Нет подходящего конструктора по умолчанию
C++ Лог файл
C++ Синглтон как антипаттерн

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

Или воспользуйтесь поиском по форуму:
краб
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 52
15.03.2014, 14:52  [ТС]     Синглтон для лог файла! #7
явно не должны,спасибо тебе большое я суть не уловил спасибо
Yandex
Объявления
15.03.2014, 14:52     Синглтон для лог файла!
Ответ Создать тему
Опции темы

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