|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 32453. Ответов 421
Метки вопросы наследования (Все метки)
начало было положено в ветке - Считать текстовые файлы из папки - там и возник вопрос об Архитектуре...
собрала... осталось отображение создать (типа I_tbl_Show) и пронаследовать ? в разные классы пункта назначения (или на консоль, или в файл, или в БД, или допустим ещё в форму)... N.B. классы (пункты-назначения) делать не надо - эти View уже реализованы разработчиками того ПО, на котором сейчас идёт работа... а) пока что можно просто прописать функции-члены класса; и по месту использовать, что надо при разработке - в файл или на консоль; б) в перспективе для Release - реализовать и откомпилировать и выгрузку и в файл, и выгрузку в БД, и отражение в DataGrid... === !! Т.Е. если в Release захочется и выгрузку в текст, и в БД, и допустим ещё в форму (например с разных кнопок сделать) - тут уж лучше и писать, как положено, наследование??... -- к слову из прошлой ветки о: === Обоснование выбора уровня Абстракции (I_tbl_Show со всеми виртуальными функциями): чтобы не дублировать код-сбора-для-выгрузки -- сделать class Table - и класс-интерфейс I_tbl_Show, в котором обозначить virtual-функции выгрузки... эти функции определить в др. классах - типа Interface (IwriteCSV, IwriteDB, IwriteDataGrid)... p.s. классы консоль, файл, бд, DataGrid - не создаём, т.к. эти пункты назначения уже присутствуют... p.p.s. вывести конечные интерфейсы с определёнными методами записи на кнопки... === ИЛИ то, что подчёркнуто чуть выше, стоит реализовать в одном классе Table, и здесь же задать все virtual функции ?? === на скрине: синие - классы, зелёные - интерфейсы (в с++ по сути тоже классы) птицами отмечены уже кое-как реализованные классы (2 птицы) курсивные стрелки - отсутствие наследования ![]() Добавлено через 7 минут вобщем вопрос: class Table и класс I_Tbl_Show - объединить или нет? Добавлено через 10 минут p.p.s. чтобы избежать проблем Ромба и такого: Неоднозначность при множественном наследовании
0
|
||||
| 11.03.2020, 10:51 | |
|
Ответы с готовыми решениями:
421
Проверка двух текстовиков
Сделать скрипт для вывода текстов из текстовиков |
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 16.07.2020, 14:00 [ТС] | ||
|
скажите мне, как быстро перейти к радостной девочке в смайлах?.. очень долго scroll идёт...
вроде получилось - вывалились все файлы... только добавила i++ иииииии ![]() Добавлено через 6 минут P.S.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 16.07.2020, 14:23 [ТС] | |
|
не при чём - реализация сделана на U++ IDE
тему можно считать завершённой
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 23.07.2020, 16:20 [ТС] | ||||
|
P.S. добавлю для инфо:
и цитату с форума: однако
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 23.07.2020, 16:25 | ||
|
Двойной вызов delete или free - это UB, ни на какое поведение компилятора закладываться нельзя (тем более что специально компилятор ничего не обязан убирать), нужно исправлять ошибку в программе.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 23.07.2020, 18:19 [ТС] | ||||
сейчас в такой ситуации, насколько поняла, и беспокоиться не надо - можно положиться на компилятор - сам уберёт задвоение delete'a -- при передаче параметра по указателю Добавлено через 6 минут p.s. или вот нормальный текст (но без вышеуказанного нюанса)
0
|
||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 23.07.2020, 18:23 | ||
|
delete будет вызван ровно сколько раз, сколько раз ты его вызовешь. Ты путаешь оптимизацию - когда компилятор в compile-time убирает лишние копирования объекта, например при return-value-optimization, и динамическое создание-удаление объектов в runtime.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 23.07.2020, 21:00 [ТС] | ||
так в том то и дело, что я ничего не создаю и не удаляю...просто передаю указатель на ЭУ progressIndicator... он сам себе даже не создаёт в данном случае (по указателю) дубль параметра, но при возврате в вызывающую сторону - вроде delete тоже сам делает, потом в деструкторе delete сам делает (я ведь ему не писала new)... хотела убедиться, что безопасно - пока всё в одном рабочем thread'е - но работа с указателями тоже вроде бывает unsafe... и 2 ядра всё-таки - не пойдёт ли код автоматом с одного потока для ускорения на разные ядра... или даже primary GUI-thread и secondary Worker thread не разойдутся ли, как в море, корабли... хотя тут вроде GuiLock работает для синхронизации Добавлено через 5 минут Декомпозирую по-тихоньку Добавлено через 2 часа 19 минут C PostCallback - грустно... с GuiLock - всё OK ! - стихамипо указателю передала массив в др класс, а оттуда отразила итерирование по нему в GUI... и т. д.
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 23.07.2020, 21:21 | |||
|
Добавлено через 16 секунд
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 23.07.2020, 22:07 [ТС] | |||
|
0
|
|||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 23.07.2020, 22:10 | |
|
1
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 23.07.2020, 23:32 | ||
|
Если "раньше имел проблемы" - это про двойное удаление, то если "раньше" программа падала на этой ошибке, а "сейчас" не падает - это не значит, что компилятор "имел проблемы". Это значит, что UB теперь проявляется по-другому. Но ошибкой это быть не перестало. И даже если программа на этом не падает, оно все равно не верно и нуждается в исправлении.
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 24.07.2020, 09:54 | |
|
...
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 24.07.2020, 10:45 [ТС] | ||||
|
там речь видимо шла о висячих (зависших) указателях - вы правы - это ошибка!... но у меня вроде изменений указателя нет, есть только изменения свойства объекта, на ячейку памяти нахождения которого указывает указатель?.. Кликните здесь для просмотра всего текста
здесь или
на ru_stackoverflow_com -- questions/108506/%D0%9F%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1% 87%D0%B0-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0% B0-%D0%BF%D0%BE-%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0% B5%D0%BB%D1%8E-%D0%B2-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1% 8E-%D0%B0-%D0%BF%D0%BE%D1%82%D0%BE%D0%BC-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0% BD%D0%B8%D0%B5-%D1%81%D0%B0%D0%BC%D0%BE%D0%B3%D0%BE-%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0% B5%D0%BB%D1%8F"]
обязательно посмотрю потом... пока кнопку btn_cancel опять мучаю :- из др класса того же thread'a - казалось бы проще простого, когда нет подключения к сети, но остановка request'a при обрыве соединения -- опять задумывается... Abort не очень удачно получается...поэтому пока сама немного в зависшем состоянии... потом отвечу
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 25.07.2020, 09:38 [ТС] | |
|
наконец, дошли до дизайна Архитектуры
![]() Передача указателя функции класса A в класс B (себе на память) === ВЫВОД: Разбросать по потокам (Data-Level parallelism и Instruction-Level Parallelism, да и просто UI и поток его обслуживающий, я бы даже сказала Controller в MVC) и выделить классы для их обслуживания (вообще не очень универсально пользоваться instance'ом, который в себе переваривает progressIndicator или чего ещё хуже - button_click -- я так думаю -- если от instance'a надо, чтобы он download_data)... думаю, чем всё тащить в класс, лучше из класса брать нужное... а то ведь параметром и весь UI можно затащить в класс и все потоки - как-то очень жирно по памяти будет, вероятно... имхо...вобщем, принципы SOLID никто не отменял -- вот и просветление по теме наступилоP.S. а UML - всё-таки в помощь... P.P.S. - пример ТЗ -
0
|
|
|
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
|
||
| 25.07.2020, 09:52 | ||
|
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 25.07.2020, 10:10 [ТС] | |||
Добавлено через 6 минут хотя, насколько понимаю, - лямбды очень хорошо пришли на смену коллбэкам благодаря своему компактному синтакису... имхо
0
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 25.07.2020, 10:24 | |
|
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 25.07.2020, 18:59 [ТС] | |||
What are the risks associated with the use of lambda functions in C++11 Добавлено через 3 минуты Memory leaks and dangling pointers Difference between dangling pointer and memory leak Добавлено через 26 секунд Lambdas: From C++11 to C++20, Part 1
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 25.07.2020, 22:07 | |
|
JeyCi, эта проблема комплексная, и не присуща только лямбдам. С простыми callback`ами даже в базовом C-шном API может быть все абсолютно тоже самое.
Иными словами, вам всегда в С и С++ нужно помнить о том, где и сколько живут ваши объекты. А висячие ссылки в лямбдах - это частный случай - не понятно, с чего бы это именно к нему такое повышенное внимание.
0
|
|
| 25.07.2020, 22:07 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|