Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 56 | 6 | 15
Назад Вниз Каталог Обновить

Аноним # OP  17/02/18 Суб 23:24:38  170892954  
image.png (126Кб, 1200x1349)
Сап, б.
Извиняюсь, что пишу не в тематику, но срочно нужен ответ, так что...

Вопрос к С++ анонам.
У меня есть небольшая иерархия функций т.е. в одной функции вызывается вторая. В качестве параметров в одну из них передаю два указателя на два класса-наследника. Так вот, при выходе из самой глубокой функции, у одного из указателей вызывается конструктор. Почему так - понять не могу.
Буду бампать говнокодом.

Благодарю за помощь
Аноним 17/02/18 Суб 23:28:56  170893195
Изначально суть программы:
У нас есть покупатель и есть супермаркет. Зайдя в супермаркет покупатель подходит к прилавкам с товарами и выбирает один из них (вводит его название в консоль) нет времени с вьюхой возиться.
Ему предлагается 6 вариантов действия:
1) Прочитать описание
2) Проверить срок годности
3) Взять продукт
4) Начать взаимодействовать с другим продуктом вводим его название и выпадает этот же список, только первые 3 пункта будут работать с указателем на тот класс
5) Пойти на кассу
6) Попытаться украсть продукты

Так вот, когда мы выбираем 4-й пункт (смена товара), то у нас вызывается конструктор последнего товара, с которым мы работали.

Теперь сам код
Аноним 17/02/18 Суб 23:31:37  170893339
image.png (8Кб, 283x116)
image.png (12Кб, 365x165)
Класс, в котором мы контролируем логику программы (очерёдность вызова функций, условия, etc)
Первый пик - его хедер. Второй - конструктор.
Аноним 17/02/18 Суб 23:41:58  170893962
image.png (39Кб, 648x379)
image.png (39Кб, 897x334)
image.png (77Кб, 822x1028)
1 пик

choise_product = objBuyer->selectProduct(objMilk, objWafers);
У покупателя objBuyer вызвали метод, отвечающий за выбор продукта (2-я пикча)
Дальше в цикле мы работаем с меню, что описано в посте с номером 2 тело этой функции будет на 3 пике. Если мы выбрали п.4 меню из поста №2, то вызываем метод на втором пике. Если выбрали 5 (пойти на кассу) или 6 (спиздить продукты), то выходим из цикла ведь мы можем сколько угодно раз чекать состав и высчитывать, не испортился ли продукт и идём на кассу/выход.
Аноним 17/02/18 Суб 23:45:41  170894212
image.png (28Кб, 945x285)
Так, аноны, я, кажись, в глаза долблюсь. Тред можно закрывать, ошибку нашёл если интересно, то смотрите на прикреп
Аноним 17/02/18 Суб 23:46:45  170894271
>>170893962
Охуеть. Не знаю, честно говоря. Был бы трезвей, может и разобрался.
мимопрограммист avr
Аноним 17/02/18 Суб 23:48:02  170894360
>>170893962
> 3 пик
А чего не свитч, религия не позволяет? Вообще, пусть живёт тредю
Аноним 17/02/18 Суб 23:49:16  170894427
>>170894360
Как-то невзлюбил во время первого знакомства мне с ифами легче читать код
Аноним 17/02/18 Суб 23:50:25  170894491
>>170894271
Слушай можно ктебе вопрос как к программисту авр.?
Аноним 17/02/18 Суб 23:50:30  170894496
>>170894427
Ясно. У меня в ИАРе оно всё равно оптимизируется, так что мне без разницы тоже.
Аноним 17/02/18 Суб 23:50:49  170894513
>>170894491
Задавай. Может и смогу ответить.
Аноним 17/02/18 Суб 23:50:55  170894518
>>170894271
Ебать, контролёр. Расскажи, каково это? Интересно? Сложно? Какие языки юзаете? АСМ всё ещё жив?
Аноним 17/02/18 Суб 23:51:02  170894524
>>170892954 (OP)
Бамп тредй
Аноним 17/02/18 Суб 23:52:48  170894628
>>170894513
Твоя профессия это больше код или схемотехника? И реально ли успевать делать работу за рабочее время и жить нормальной жизнью или надо задротить как в некоторых областях программирования?
Аноним 17/02/18 Суб 23:52:50  170894629
>>170894518
АСМ жив, как же без него? Так-то кодить на нём смысла нет - мозги сломаешь от такой-то рутины, но компилятор всё равно всё это преобразует в него, поэтому посмотреть что там получилось возможность есть.
Аноним 17/02/18 Суб 23:54:02  170894694
>>170892954 (OP)
> вопрос к c++ анонам.
Ну вот и иди в /pr/. Заебали срать в /b.
Аноним 17/02/18 Суб 23:54:46  170894737
f2e.jpg (51Кб, 960x540)
> choise
Аноним 17/02/18 Суб 23:55:05  170894758
>>170894694
>срать в /b.
> в /b
> /b
Ты рофлишь?
Аноним 17/02/18 Суб 23:55:48  170894801
>>170894737
О, пасиб, не заметил
Аноним 17/02/18 Суб 23:58:45  170894966
>>170894628
>Твоя профессия это больше код или схемотехника?
И то и другое.
>>170894628
>И реально ли успевать делать работу за рабочее время и жить нормальной жизнью или надо задротить как в некоторых областях программирования?
Ну нам кагбэ время дают определённое, начальство понимает что из аврала ничего хорошего всё равно никогда не выйдет. Поначалу задротил, да. Когда только въезжал в программирование. Даже вечером бывало после работы аутировал, смотря на этот код, так как не мог отойти после работы. Сейчас так не делаю, стараюсь отдыхать. Правда недавно пришлось дома пилить девайс на пердуине. Сейчас на работе программирую на C++, наверное один я из всех. Хотя ума не приложу как использовать вообще эти классы. У меня в проекте только один класс пока имеет несколько объектов - это таймер. Все они задействуют при этом один физический таймер в контроллере. Плюс ещё несколько классов, имеющих по единственному глобальному объекту, прпосто потому что мне так удобней было.
Аноним 18/02/18 Вск 00:01:23  170895095
>>170894758
Что не так, школодолбоёб?
> сап, б
Борда, на которой я сейчас нахожусь, называется /b - Бред. Сейчас я, может, сонный, но тебе меня не обмануть. Не-а. No way.
Аноним 18/02/18 Вск 00:10:38  170895609
15072712472500.jpg (170Кб, 470x470)
>>170895095
Аноним 18/02/18 Вск 00:13:50  170895765
>>170894966
То есть код там не такой уж углубленный раз классы особо можно не задействовать :D
Аноним 18/02/18 Вск 00:22:54  170896323
>>170895765
Ну да. В микроконтроллерах всё привязано в основном к регистрам и дёрганием ног (портов, которые тоже являются регистрами). Это разве что абстрактные классы объявлять, а потом наследовать, но у меня пока до такого не дошло, да и нет времени думать как это всё туда впилить. У нас все привыкли на С кодить, а я решил немного выебнуться и пилить на крестах. Мне нравится что там разные функции можно с одним названием объявлять. Плюс этот таймер мне пришёлся как раз кстати, а то там бы вообще получилась каша. В каждом классе считай свои переменные, с которыми работают функции класса. Когда их не приходится каждый раз писать и они не мелькают под глазами, то уже немного удобнее.
Аноним 18/02/18 Вск 00:28:18  170896681
>>170896323
Я только С знаю, не особо пониммаю что ты пишешь. Ну то есть условный средний проект на МК не содержит в себе десять тысяч строк кода, все же попроще?
Аноним 18/02/18 Вск 00:29:27  170896760
>>170892954 (OP)
>у одного из указателей вызывается конструктор. Почему так - понять не могу
Ставь в конструктор breakpoint и смотри call stack.
Запости код самой глЫбокой функции, неохота во всей твоей галиматье разбираться.
Аноним 18/02/18 Вск 00:33:40  170897055
Настоящий крестосеньор с ЗП 200к/мес в треде. Можете по-быстрому что-нибудь спросить.
Аноним 18/02/18 Вск 00:38:46  170897390
>>170897055
Как буст изучать? Умеешь только в говнокод или крутое можешь чтонть в алгоритмах.
Аноним 18/02/18 Вск 00:40:39  170897514
>>170896760
Та уже всё, нашёл ошибку спасибо, что отозвался >>170894212
Аноним 18/02/18 Вск 00:42:12  170897614
>>170896681
Зависит от проекта. У меня сейчас на меге 32-й меге порядка 4000-5000 строк пока что где-то, это около 17кбайт прошивки.
Аноним 18/02/18 Вск 00:58:46  170898548
>>170897390
> Как буст изучать?
Буст - это пиздец, конечно. Годное введение - книжка Антона Полухина, рекомендую. В реальной работе это выглядит, как мучение с кучей чтения справки, экспериментов и т.д. Даже при наличии опыта.

>Умеешь только в говнокод или крутое можешь чтонть в алгоритмах.
Умею говнокод. "Алгоритмы" эти ваши не представляю кому нужны. Даже сложный алгокод у меня - это комбинация шагов, реализованных в stl+boost. Хороший программист не изобретает велосипеды.
Аноним 18/02/18 Вск 01:10:22  170899281
Оп, ты еще здесь? Можешь пожалуйста помочь?
Аноним 18/02/18 Вск 01:32:57  170900492
>>170899281
Постараюсь.
Что случилось?
Аноним 18/02/18 Вск 01:37:46  170900735
>>170900492
Я няша-стесняша, хочу встречаться с прогромистом.
Аноним 18/02/18 Вск 01:41:01  170900918
>>170900735
@RecursiveDaun
Пиши телега
Аноним 18/02/18 Вск 01:44:45  170901135
>>170900492
Блин, это не я > >>170900735
Короче, у меня как раз таки с объектно ориентированным программированием плохо. Надо одну небольшую штуку написать, а я не знаю как.
Аноним 18/02/18 Вск 01:45:14  170901161
>>170893339
>Класс, в котором мы контролируем логику программы (очерёдность вызова функций, условия, etc)
как будто лабу студенческую увидел
Аноним 18/02/18 Вск 01:45:42  170901184
>>170901135
Рассказывай. И опять-таки в телегу если есть, ибо гугло-капчу надоело вводить
Аноним 18/02/18 Вск 01:46:19  170901219
>>170901161
Это плохая идея?
3-й курс погромиста
Аноним 18/02/18 Вск 01:48:27  170901349
>>170901184
Извини, спасибо, если поможешь. У тебя вообще есть время на это?
Аноним 18/02/18 Вск 01:49:48  170901416
>>170901349
Полчаса точно. Дальше будет виднее
Аноним 18/02/18 Вск 01:51:26  170901505
>>170901219
просто человек, который мыслит категориями "очередность вызова функций", "иерархия функций, т.е. в одной функции вызывается вторая" , очевидно, несколько на вы с программированием в целом, и с компоновкой кода в какие-то разумные куски в частности.
Аноним 18/02/18 Вск 02:03:46  170902096
>>170901505
Бле, а мне казалось, что это правильный стиль написания.
А как тогда надо? Подскажешь :3 ?
Аноним 18/02/18 Вск 02:14:15  170902559
>>170902096
этот стиль написания можно считать правильным. аналогии всегда неверны, но в данном случае это стиль рассуждения трехлетнего ребенка, которому чтобы попасть на детскую площадку надо попеременно двигать левую и правую ногу. это формально верно, но это мелочи, это частности, которые с опытом, причем достаточно небольшим, становятся насколько очевидными, что на них перестают заострять внимание и перестают о них говорить. это как если бы человек в резюме написал, что вот он делал проект и в нем какой-то прости господи паттерн применил.
Аноним 18/02/18 Вск 02:15:44  170902616
>>170902559
Кажись понял.
Спасибо, анон
Аноним 18/02/18 Вск 02:28:09  170903029
>>170896323
Я когда-то эти занимался, такой стыд сейчас тебя читать. Но да, хуле там на контроллерах, только ногами дрыгать на самом деле.
Аноним 18/02/18 Вск 02:47:50  170903633
>>170903029
>Но да, хуле там на контроллерах, только ногами дрыгать на самом деле.
А что не так? По сути, это его прямое назначение. Что у него есть снаружи, кроме ног?
Аноним 18/02/18 Вск 02:56:28  170903882
>>170903633
Я когда стал лучшим программером, понял насколько тупо я тогда решал поставленные задачи.
Суть программирования именно в создании абстракций и превращении кода из машинного в человеческий. И чем ближе он к человеческому, тем более сложные задачи можно решать.
А в микроконтроллерах мы привыкли видеть чистые машины и не видеть конкретные задачи. От этого страдает качество кода. Ну и квалификация инженеров обычно низкая, что уж говорить, просто потому что надо время не на чистую теорию тратить а ещё на всякие понимания Rs232 и 485.
В общем ты молодец, что перешёл на плюсы. Осталось только осознать зачем нужно ооп.
Аноним 18/02/18 Вск 03:14:13  170904430
>>170903882
>Суть программирования именно в создании абстракций и превращении кода из машинного в человеческий. И чем ближе он к человеческому, тем более сложные задачи можно решать.
>А в микроконтроллерах мы привыкли видеть чистые машины и не видеть конкретные задачи.
Почему? Вот у меня сейчас в проекте неаписанный парсер текстовых сообщений, чтобы осуществлять конфигурирование системы при помощи, собственно, текстовых сообщений. А работа с портом UART - это уже давно там, где-то в глубине программы, я туда уже и не суюсь. Оно работает, есть изначально написанный буфер, я туда уже и не суюсь. У меня есть функции, реализующие поиск там текста и вытаскивание его и выполнение каких-то действий, формирование ответа, тоже текстовым сообщением.
Осталось только осознать зачем нужно ооп.
Надеюсь, дойду и до этого.
Аноним 18/02/18 Вск 03:15:41  170904461
>>170904430
>неаписанный парсер текстовых сообщений, чтобы осуществлять конфигурирование системы при помощи, собственно, текстовых сообщений
и что, за такое кто-то деньги платит?
Аноним 18/02/18 Вск 03:16:44  170904501
>>170904461
Ну да. У нас задача - сделать свой девайс, собственно, модуль. Который будет работать в составе нашего оборудования.
Аноним 18/02/18 Вск 03:32:34  170904830
>>170904430
Вот в этом и суть проблемы инженерного подхода.
Парсер свой, буфер уарт свой, вместо бинарных данных идут реальные строки, я сам таким был и рад что больше не горожу таких велосипедов.
Если кратко, ( в универе кстати этому учат, но неправильно) то выделять интерфейсы надо по методологии OSI (уже и название подзабыл) суть в том, чтобы канальный уровень у тебя уарт, но он может и будет потом заменен, поэтому там должен быть абстрактный интерфейс передачи бинарных данных. Над ним должен быть протокольный уровень, типа как ты десериализуешь бинарные данные, а потом уже уровень твоей апликухи с конечными командами.
На перформанс это не повлияет, но сэкономит тебе тучу времени, когда вы с карта перекатиться на эзернет, например, или попробуете по Rs485 в общей сетке поработать.
Понимаешь? И вот все эти уровни это классы со своими интерфейсами, а тот же уарт это наследник и конечная реализация одного из интерфейсов. Вот тогда оно будет гибко пиздато и на века. (Я не говорю о черезмерном увлечении шаблонами, если что) просто о здравом смысле и сопровождении.
Аноним 18/02/18 Вск 03:34:26  170904880
>>170904830
какой же ты ебанат
Аноним 18/02/18 Вск 03:35:28  170904897
>>170904830
Ну и в самом приложении в итоге, тебе не придется руками подписываться на какое-нибудь "прерывание 32". Оно конечно у тебя будет, но именно приложение у тебя просто должно словить абстрактный ивент данные получены, потому что прерывание словил нет драйвер, от него ивент словил протокол, распарсил тебе до уровня апликухи, ну и ты в красивом виде получил свой Останов правого двигателя.
Аноним 18/02/18 Вск 03:36:01  170904911
>>170904880
:*
И я тебя люблю.
Аноним 18/02/18 Вск 08:33:44  170909585
>>170894427
ну а почему тогда не елсе иф
Аноним 18/02/18 Вск 11:36:37  170915566
gv

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 56 | 6 | 15
Назад Вверх Каталог Обновить

Топ тредов
Избранное