Здравствуйте, Calc, Вы писали:
C>Вот делаю программу
(Чистый WinApi, но вопрос не по нему, а по ООП):
C>В функции WinMain обьявлен класс CProgram
C>В в этом классе есть переменная CSettings
C>В CSettings есть CSettingsDialog
C>В CSettins есть функция, в которой объявлен класс CUpdate
C>Хочу сделать класс CLogFile (название говорит само за себя)
C>Нужно, чтоб он был доступен из всех классов.
C>То есть у него будет функция типа LogWrite(что она делает не имеет значение)
C>В функции WinMain хочу вызвать LogCreate
C>В классе CSettings несколько раз LogWrite()
C>В других классах тоже самое.
C>Не представляю куда запихать CLogFile
В принципе можно воспользоваться паттерном singleton.
Что -то типа этого:
public Class CLogFile
{
private:
static ClogFile* instance = null;
protected:
CLogFile();
public:
static CLogFile* instance();
}
CLogFile::instance()
{
if ( null == instance )
{
instance = new LogFile();
}
return instance
}
В С++ коде могу немного ошибаться, но главное смысл.
Обращение К обекту класса происходит через статическую функцию( типа logFile = CLogFile::instance()). Это дает возможность обращаться к объекту в любой точке программы. Но при этом объект создется только один раз. Конструктор сделан protected чтобы нельзя было создать экземпляр класса в обход функции instance().