Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2015, 21:44   #1
X-Key
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 33
По умолчанию

Всем привет!

Значит в чем проблема, писал я некоторое время назад класс лога.
А сейчас начал читать и не понял что я хотел.

Код:
static class reLog // А ведь пишется, что без объекта если статический
{
private:
	time_t tTime;
	std::ofstream outLog;

	void reInit ();
	char* reGetCurrentSystemTime ();

public:
	void rePrintLog (const char* message, unsigned int value);

	reLog ();
	~reLog ();

}*Log = new reLog; // а зачем?
аналогишна
Код:
class reLog
{
private:
	time_t tTime;
	std::ofstream outLog;

	void reInit ();
	char* reGetCurrentSystemTime ();

public:
	void rePrintLog (const char* message, unsigned int value);

	reLog ();
	~reLog ();

}static *Log = new reLog; // тоесть теперь если есть и другие объекты все будет общим?
В чем разница? И что значит, если мы создаем статический экземпляр класса. И что, когда создаем статическому классу экземпляр. Я затормозил.

Или если класс статический, то можно возиться с классом и через объект и без него?

Знатоки, где вы? )

Последний раз редактировалось Stilet; 04.04.2015 в 09:32.
X-Key вне форума Ответить с цитированием
Старый 03.04.2015, 22:31   #2
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Что-то вроде такого:

Код:
// Объявление
class Log
{
public:
    ~Log();

    static Log &instance();

private:
    Log(); // обязательно сделать конструктор приватным

    static Log *m_instance;
};

// Реализация
Log *Log::m_instance = NULL;

Log &Log::instance()
{
    if (m_instance == NULL) {
        m_instance = new Log();
    }

    return *m_instance;
}
Lardes вне форума Ответить с цитированием
Старый 03.04.2015, 22:32   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Нет такого понятия как "статический класс"
static переменная не будет видна в других модулях.
waleri вне форума Ответить с цитированием
Старый 03.04.2015, 22:33   #4
X-Key
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 33
По умолчанию

А, забыл сказать, если делать класс (объект) не статическим то выдает ошибки о переопределении LNK2005. Объект использую в других классах.

Lardes, предлагаешь для лога использовать синглетон?

waleri, вообще то оно как бы есть ) Сродни синглетонам

Последний раз редактировалось Stilet; 04.04.2015 в 09:33.
X-Key вне форума Ответить с цитированием
Старый 03.04.2015, 22:41   #5
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

X-Key, возможно. Если класс в твоем представлении должен быть в единственном экземпляре и не допускать создания новых объектов, то имеет смысл. Но я бы пересмотрел подход и отказался от синглетона
Lardes вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Статический стек (си) Iron_f1st Помощь студентам 1 10.03.2014 20:30
Статический массив Си Newb1e Помощь студентам 3 18.06.2012 01:24
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
Статический класс stscolt PHP 4 20.05.2011 11:38
статический массив IrinaSS Общие вопросы C/C++ 2 08.12.2010 19:31