Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 04.06.2015
Сообщений: 40

Передача данных между классами

20.11.2022, 19:39. Показов 506. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте. Может быть ответ на этот вопрос есть и на поверхности, но прошу помочь понять как передавать данные между взаимосвязанными классами? Работаю с QT. У меня есть, условно, Классы A, B, C и D. В каждом классе есть свои параметры:
В классе А - параметры aw, aw2, aw3
В классе B - параметры bw, bw2, bw3
В классе C - параметры cw, cw2, cw3
В классе D - параметры dw, dw2, dw3
Каждый из классов использует в своих каких-либо формулах переменные, которые рассчитываются в своих классах. Пример привела на картинке.
На данный момент использую главный класс widget, в котором постоянно переписываю структуры параметров, которые потом передаю по указателю в нужный класс. Но это очень запутывает, особенно когда параметров в каждом классе не 2-3, а уже по 25-30
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2022, 19:39
Ответы с готовыми решениями:

Передача данных между классами
Здравствуйте! Программирую графику на C++ под DirectX9, если точнее то пытаюсь написать простой редактор 3D графики. есть класс...

Передача данных между классами
Понимаю что это основы, но что-то я запутался... Есть основной класс программы MainWindow. Есть другой класс (назовем его MyClass). В...

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

5
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
20.11.2022, 19:44
Цитата Сообщение от Olya9898 Посмотреть сообщение
между взаимосвязанными классами
Каким образом они взаимосвязаны?
Цитата Сообщение от Olya9898 Посмотреть сообщение
В классе А - параметры aw, aw2, aw3
В классе А - параметры aw, aw2, aw3
В классе А - параметры aw, aw2, aw3
Это ж три одинаковых строчки.
0
3 / 3 / 0
Регистрация: 04.06.2015
Сообщений: 40
20.11.2022, 19:45  [ТС]
https://www.cyberforum.ru/atta... 1668962690
Миниатюры
Передача данных между классами  
0
3 / 3 / 0
Регистрация: 04.06.2015
Сообщений: 40
20.11.2022, 19:46  [ТС]
Извиняюсь, случайно нажала не на ту клавишу и сообщение отправилось. Уже отредактировала
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.11.2022, 19:56
Olya9898, объекты воспринимают изменения лишь изменяя своё состояние. Редко бывает нужно иметь несколько десятков параметров для одного класса. Обычно класс - набор для какой-то задачи очень локальной и он обобщает класс таких задач. Логика и возможность несложного соблюдения инварианта требуют этого. А изменение состояния может делаться всеми кто имеет доступ к объекту. Это может быть затребовано непосредственно, через интерфейс класса предлагающий прямую запись (if any) или путём запуска методов класса принимающих набор аргументов, которые определят, что ему дальше делать - менять состояние, возбуждать другие объекты и т.п. События, паттерн наблюдатель, обратные вызовы, это только малая толика. Не простая к слову.
Olya9898, нет серебряной пули на все случаи жизни, поэтому ваша формулировка вопроса не предполагает ответа. В конкретных условиях, можно что-то посоветовать. Попробуйте уточнить свой вопрос.
1
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
21.11.2022, 06:06
Полностью солидарен с уважаемым IGPIGP, добавлю несколько пунктов от себя.

Цитата Сообщение от Olya9898 Посмотреть сообщение
передавать данные между взаимосвязанными классами
Больше всего на способ передачи влияет отношение этих классов и их объектов -- наследуются ли они, аггрегируются или как они еще связаны, и общая архитектура приложения -- многопоточное исполнение, строгость инкапсулированности объектов, требования к CAP и гарантии этого приложения.

Избрание подходящего способа получения, обработки и хранения данных -- чуть ли не основная задача современного погромиста.

Цитата Сообщение от Olya9898 Посмотреть сообщение
параметров в каждом классе не 2-3, а уже по 25-30
У вас что-то не так с декомпозицией.
Такого количества полей в классах быть не должно.
Это невозможно удержать в голове, и, следовательно, нереально поддерживать такой код.
Декомпозируйте это вот.

Добавлено через 2 минуты
Цитата Сообщение от Olya9898 Посмотреть сообщение
Каждый из классов использует в своих каких-либо формулах переменные, которые рассчитываются в своих классах. Пример привела на картинке.
На данный момент использую главный класс widget, в котором постоянно переписываю структуры параметров, которые потом передаю по указателю в нужный класс.
Указанные взаимодействия не выглядят сложными.
Возможно, ваша декомпозиция не разделяет логику и данные?
Возможно, вам стоит посмотреть в сторону трехуровневой архитектуры.
Если приведёте сниппеты кода, можно будет сказать что-то более конкретное.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2022, 06:06
Помогаю со студенческими работами здесь

Передача std::vector между классами
Класс Data служит для инициализации переменных. Класс А - для обработки данных. В классе А меняются данные в контейнере std::vector (размер...

Передача данных между потоками
Есть сервер. Для каждого клиента он создает новый поток и работает с ними независимо от остальных...Например мне надо чтобы получив...

Передача данных между программами и сигналы
Здравствуйте, помогите пожалуйста с заданием. Есть 3 программы. Первая создает набор данных (например массив типа int или даже одно...

Передача данных между двумя приложениями.
Суть проблемы такова: есть приложение на с#, производящее вычисления, результатом является массив данных. Есть прога на с++ + QT, умеющая...

Робота с классами (передача объекта класса в другой)
Только начал изучать классы в С++. Подскажите, почему на моменте MyText.AddStr(One.name, 1) программа выдает ошибку. Я пытаюсь имя One.name...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru