Russian Qt Forum
Ноябрь 24, 2024, 22:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Есть ли в Qt аналог глобальных объектов как в PHP?  (Прочитано 21104 раз)
voron1980
Гость
« : Июнь 14, 2012, 23:04 »

Пишу программу на Qt которая авторизируется на сайте и держит информацию о сессии в куках (jar)
Пока все происходило в одном классе все было очевидно, но дальше я хочу разложить функционал по полочкам и сделать единый класс для работы с авторизацией и передачей данных на сайт который будет содержать одинаковые данные и будет создан один раз при запуске приложения, то же самое хочу сделать с настройками, при изменении настроек информация, через сигнал будет рассылаться куда нужно.
Все говорят, что плохо работать с классом по указателю, но разве лучше создавать отдельные экземпляры класса в разных местах, каждый сделает свое дело и не скажет об этом туда где создан другой экземпляр, у того свой сигнал.
В общем можно создавать классы и подключив их к main.cpp сделать их глобальными?
Я только несколько недель экспериментирую с C++ и пока это самая большая проблема, философия.
Все равно объекты приходится передавать по ссылке в класс который заполнит их данными, борясь с воплями компилятора на каждом шагу, но эти переданные объекты созданы в разных классах у них разные сигналы, просто мы экономим время на копирование кода, а проблема остается.
В общем почему то очевидное спрятано глубоко, в примерах не раскрывается простота передачи данных, один класс другому друг, а один класс двум классам не друг а два друга которые знать не знают про то, что есть вторая пара друзей.
В общем как с этим бороться если это возможно?
Спасибо.
« Последнее редактирование: Июнь 17, 2012, 18:44 от voron1980 » Записан
ufna
Гость
« Ответ #1 : Июнь 14, 2012, 23:09 »

Вот то, о чем постоянно говорит Igors.. надо С++ учить ДО Qt, а не во время или после Улыбающийся

Цитировать
Все говорят, что плохо работать с классом по указателю, но разве лучше создавать отдельные экземпляры класса в разных местах, каждый сделает свое дело и не скажет об этом туда где создан другой экземпляр, у того свой сигнал.

не знаю кто они все, видимо те самые, которые врут.

"Глобальный" класс - может быть синглетон
Записан
mutineer
Гость
« Ответ #2 : Июнь 14, 2012, 23:23 »

В общем как с этим бороться если это возможно?
Спасибо.

Вот исходя из вышенаписанного напрашиваются две рекомендации:
1) Научиться излагать мысли более понятно
2) Выучить С++
Записан
voron1980
Гость
« Ответ #3 : Июнь 14, 2012, 23:52 »

Стоп стоп это форум, чем вы думаете я занимаясь.
Не нужно копировать чужие мысли, лучше написать свое мнение и обосновать его как это сделал я.
Но я бы хотел просто получить ответ не переходя на личности если что.
Лучше учиться думать свои мысли чем не иметь их.
К стати как где смотреть про это в С++ вы хотя бы знаете?
например пространства имен или предварительное объявление класса, как вы узнали про то что вы не поняли моих мыслей?
« Последнее редактирование: Июнь 15, 2012, 00:09 от voron1980 » Записан
ufna
Гость
« Ответ #4 : Июнь 15, 2012, 00:14 »

как вы узнали про то что вы не поняли моих мыслей?

Записан
mutineer
Гость
« Ответ #5 : Июнь 15, 2012, 00:21 »

Я бы ответил по существу, вот только суть вопроса постоянно ускользает из-за сумбурности твоего изложения
Записан
voron1980
Гость
« Ответ #6 : Июнь 15, 2012, 02:02 »

Я бы ответил по существу, вот только суть вопроса постоянно ускользает из-за сумбурности твоего изложения
Это по тому что меня сбивает лишняя много полезной информации, не могу уловить, суть убегает как таракан.
ясней не могу если бы мог не писал бы на форум а взял бы и сделал сам
Записан
Serr500
Гость
« Ответ #7 : Июнь 15, 2012, 08:24 »

1) Глобальный объект можно создать и в C++. Например, так.
global.h
Код:
extern TMyClass g_MyObject;
global.cpp
Код:
TMyClass g_MyObject
любой_файл.cpp
Код:
#include "global.h"
// . . .
    g_MyObject.method();
// . . .
Но могут быть проблемы, связанные с порядком создания и уничтожения.

2) Синглтон Мейерса - самое подходящее в данном случае решение. http://ru.wikipedia.org/wiki/Одиночка_(шаблон_проектирования)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Июнь 15, 2012, 10:29 »

1) Глобальный объект можно создать и в C++. Например, так.
Все так, но причем тут ++? Это и на "просто С" так же  Улыбающийся

Стоп стоп это форум, чем вы думаете я занимаясь.
Не нужно копировать чужие мысли, лучше написать свое мнение и обосновать его как это сделал я.
Но я бы хотел просто получить ответ не переходя на личности если что.
Мне нравится такой подход, но чего такой конфуз с глобальными переменными?  Улыбающийся
Записан
Serr500
Гость
« Ответ #9 : Июнь 15, 2012, 10:36 »

Все так, но причем тут ++? Это и на "просто С" так же  Улыбающийся
Про существование "просто C" я давно уже забыл...  Подмигивающий
Записан
voron1980
Гость
« Ответ #10 : Июнь 15, 2012, 11:44 »

2) Синглтон Мейерса - самое подходящее в данном случае решение. http://ru.wikipedia.org/wiki/Одиночка_(шаблон_проектирования)
Спасибо за наводку, использовал Синглтон на PHP что бы писать логи в файл, но не думал что он есть и в C++.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Июнь 15, 2012, 12:18 »

2) Синглтон Мейерса - самое подходящее в данном случае решение. http://ru.wikipedia.org/wiki/Одиночка_(шаблон_проектирования)
Спасибо за наводку, использовал Синглтон на PHP что бы писать логи в файл, но не думал что он есть и в C++.
паттерны не привязаны ни к какому конкретному языку программирования
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
voron1980
Гость
« Ответ #12 : Июнь 15, 2012, 12:36 »

Мне нравится такой подход, но чего такой конфуз с глобальными переменными?  Улыбающийся
Пытаюсь освоить Qt С++ на практике, хочется делать приложения которые можно будет относительно легко масштабировать, назначить синглтон например ответственным за авторизацию и постоянно его опрашивать откуда захочу, а не слетела ли авторизация, а есть ли соединение с сервером и т.д.
Я до сих пор не уверен, что глобоидальные объекты именно глобальные, по тому, что авторы языка и те кто на нем успешно пишут как то по другому мыслят. Идеально когда порог вхождения в язык небольшой, а потом если что-то нужно делать более качественно или функционально доучиваешься, в С++ и подобных надо сразу знать все или у тебя ничего дельного кроме helo world не получится.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Июнь 15, 2012, 12:43 »

Я до сих пор не уверен, что глобоидальные объекты именно глобальные, по тому, что авторы языка и те кто на нем успешно пишут как то по другому мыслят. Идеально когда порог вхождения в язык небольшой, а потом если что-то нужно делать более качественно или функционально доучиваешься, в С++ и подобных надо сразу знать все или у тебя ничего дельного кроме helo world не получится.
Любая переменная в С/С++ есть ячейка памяти - со всеми вытекающими: максимальная эффективность и гибкость и (с др стороны) полная незащищенность, отсутствие вумных "сборщиков мусора" и.т.п. "С" был придуман как замена ассемблеру, и, несмотря на все попытки извращенцев, это остается так. Ну а недостатки - это продолжение достоинств, и наоборот

 
Записан
voron1980
Гость
« Ответ #14 : Июнь 15, 2012, 14:02 »

Я до сих пор не уверен, что глобоидальные объекты именно глобальные, по тому, что авторы языка и те кто на нем успешно пишут как то по другому мыслят. Идеально когда порог вхождения в язык небольшой, а потом если что-то нужно делать более качественно или функционально доучиваешься, в С++ и подобных надо сразу знать все или у тебя ничего дельного кроме helo world не получится.
Любая переменная в С/С++ есть ячейка памяти - со всеми вытекающими: максимальная эффективность и гибкость и (с др стороны) полная незащищенность, отсутствие вумных "сборщиков мусора" и.т.п. "С" был придуман как замена ассемблеру, и, несмотря на все попытки извращенцев, это остается так. Ну а недостатки - это продолжение достоинств, и наоборот

 
Сейчас все так быстро меняется, что к тому же С++ например хорошо бы изучить еще криптографию, работу с устройствами например aladin, сотню другую разных вещей, а потом уже можно говорить, что ручной контроль памяти это даже плюс но пока для меня это точно минус.
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.384 секунд. Запросов: 23.