Название: Передача данных между классами Отправлено: Edynchik от Июль 01, 2013, 10:00 Добрый день. Чую сейчас будут пинать, но все таки напишу о следующей проблеме. Есть у меня некий класс формы, также присутствую еще два класса : опросник порта и обработчик информации. Разнесено для того чтобы данными могли из нескольких классов опросников могли пользоваться неколько классов обработчиков. И вот произошла беда, класс опросник сложил инфу в некую переменную, а как засунуть ее в класс обработчик ума не приложу. В обработчике она должна забирать данные из класса-формы. В класс обработчик передаю класс формы как предок, но не могу получить доступ. Переменная точно публик. Спасибо, сильно не пинайте.
Название: Re: Передача данных между классами Отправлено: Old от Июль 01, 2013, 10:07 В Qt для этого есть хороший сигнально-слотовый механизм.
Название: Re: Передача данных между классами Отправлено: Bepec от Июль 01, 2013, 10:14 Парочка вариантов:
1) Гетерами - создаём функцию, которая при вызове возвращает ваши данные в удобоваримом виде. Функция публичная, собственно надо знать лишь указатель на класс. Сложность - нулевая. Недостаток - путаница указателей классов между собой. 2) сигнал-слотовым механизмом. О нём написано много, суть - делаем сигнал, передающий данные и привязываем его к слоту. Сложность - для новичка средне :P Недостаток - слоты работают медленнее чем прямой вызов функций. 3) сигнлтон. Класс, доступный всем и существующей в единичном экземляре. Позволяет получить доступ к переменным кому угодно, откуда угодно в вашей программе. Сложность - средняя. (но много инфы ;) ) Недостаток - нужна синхронизация доступа. 4) делать класс - менеджер, руководящий процессом. Имеющий в себе указатели на все ваши основные классы и организующий общение их между собой при помощи прямых вызовов функций. Сложность - легкая, но архитектуру надо продумать. Недостаток - архитектура сначала кривая бывает :D PS эк я выпендрился :D Название: Re: Передача данных между классами Отправлено: Edynchik от Июль 01, 2013, 10:34 спасибо за ответы, пока сделал сигнал-слотами. Причиной поста стала проблема передачи сигнала из класса формы в слот класса обработчика. А конкретно пытался сделать коннект в классе обрабочике, а не классе форме. Но интересны другие варианты решения данной проблемы.
|