Сап, б.Извиняюсь, что пишу не в тематику, но срочно нужен ответ, так что...Вопрос к С++ анонам. У меня есть небольшая иерархия функций т.е. в одной функции вызывается вторая. В качестве параметров в одну из них передаю два указателя на два класса-наследника. Так вот, при выходе из самой глубокой функции, у одного из указателей вызывается конструктор. Почему так - понять не могу. Буду бампать говнокодом.Благодарю за помощь
Изначально суть программы:У нас есть покупатель и есть супермаркет. Зайдя в супермаркет покупатель подходит к прилавкам с товарами и выбирает один из них (вводит его название в консоль) нет времени с вьюхой возиться. Ему предлагается 6 вариантов действия:1) Прочитать описание2) Проверить срок годности3) Взять продукт4) Начать взаимодействовать с другим продуктом вводим его название и выпадает этот же список, только первые 3 пункта будут работать с указателем на тот класс5) Пойти на кассу6) Попытаться украсть продуктыТак вот, когда мы выбираем 4-й пункт (смена товара), то у нас вызывается конструктор последнего товара, с которым мы работали.Теперь сам код
Класс, в котором мы контролируем логику программы (очерёдность вызова функций, условия, etc)Первый пик - его хедер. Второй - конструктор.
1 пикchoise_product = objBuyer->selectProduct(objMilk, objWafers);У покупателя objBuyer вызвали метод, отвечающий за выбор продукта (2-я пикча) Дальше в цикле мы работаем с меню, что описано в посте с номером 2 тело этой функции будет на 3 пике. Если мы выбрали п.4 меню из поста №2, то вызываем метод на втором пике. Если выбрали 5 (пойти на кассу) или 6 (спиздить продукты), то выходим из цикла ведь мы можем сколько угодно раз чекать состав и высчитывать, не испортился ли продукт и идём на кассу/выход.
Так, аноны, я, кажись, в глаза долблюсь. Тред можно закрывать, ошибку нашёл если интересно, то смотрите на прикреп
>>170893962Охуеть. Не знаю, честно говоря. Был бы трезвей, может и разобрался.мимопрограммист avr
>>170893962> 3 пикА чего не свитч, религия не позволяет? Вообще, пусть живёт тредю
>>170894360Как-то невзлюбил во время первого знакомства мне с ифами легче читать код
>>170894271Слушай можно ктебе вопрос как к программисту авр.?
>>170894427Ясно. У меня в ИАРе оно всё равно оптимизируется, так что мне без разницы тоже.
>>170894491Задавай. Может и смогу ответить.
>>170894271Ебать, контролёр. Расскажи, каково это? Интересно? Сложно? Какие языки юзаете? АСМ всё ещё жив?
>>170892954 (OP)Бамп тредй
>>170894513Твоя профессия это больше код или схемотехника? И реально ли успевать делать работу за рабочее время и жить нормальной жизнью или надо задротить как в некоторых областях программирования?
>>170894518АСМ жив, как же без него? Так-то кодить на нём смысла нет - мозги сломаешь от такой-то рутины, но компилятор всё равно всё это преобразует в него, поэтому посмотреть что там получилось возможность есть.
>>170892954 (OP)> вопрос к c++ анонам.Ну вот и иди в /pr/. Заебали срать в /b.
> choise
>>170894694>срать в /b.> в /b> /bТы рофлишь?
>>170894737О, пасиб, не заметил
>>170894628>Твоя профессия это больше код или схемотехника?И то и другое.>>170894628>И реально ли успевать делать работу за рабочее время и жить нормальной жизнью или надо задротить как в некоторых областях программирования?Ну нам кагбэ время дают определённое, начальство понимает что из аврала ничего хорошего всё равно никогда не выйдет. Поначалу задротил, да. Когда только въезжал в программирование. Даже вечером бывало после работы аутировал, смотря на этот код, так как не мог отойти после работы. Сейчас так не делаю, стараюсь отдыхать. Правда недавно пришлось дома пилить девайс на пердуине. Сейчас на работе программирую на C++, наверное один я из всех. Хотя ума не приложу как использовать вообще эти классы. У меня в проекте только один класс пока имеет несколько объектов - это таймер. Все они задействуют при этом один физический таймер в контроллере. Плюс ещё несколько классов, имеющих по единственному глобальному объекту, прпосто потому что мне так удобней было.
>>170894758Что не так, школодолбоёб? > сап, бБорда, на которой я сейчас нахожусь, называется /b - Бред. Сейчас я, может, сонный, но тебе меня не обмануть. Не-а. No way.
>>170895095
>>170894966То есть код там не такой уж углубленный раз классы особо можно не задействовать :D
>>170895765Ну да. В микроконтроллерах всё привязано в основном к регистрам и дёрганием ног (портов, которые тоже являются регистрами). Это разве что абстрактные классы объявлять, а потом наследовать, но у меня пока до такого не дошло, да и нет времени думать как это всё туда впилить. У нас все привыкли на С кодить, а я решил немного выебнуться и пилить на крестах. Мне нравится что там разные функции можно с одним названием объявлять. Плюс этот таймер мне пришёлся как раз кстати, а то там бы вообще получилась каша. В каждом классе считай свои переменные, с которыми работают функции класса. Когда их не приходится каждый раз писать и они не мелькают под глазами, то уже немного удобнее.
>>170896323Я только С знаю, не особо пониммаю что ты пишешь. Ну то есть условный средний проект на МК не содержит в себе десять тысяч строк кода, все же попроще?
>>170892954 (OP)>у одного из указателей вызывается конструктор. Почему так - понять не могуСтавь в конструктор breakpoint и смотри call stack.Запости код самой глЫбокой функции, неохота во всей твоей галиматье разбираться.
Настоящий крестосеньор с ЗП 200к/мес в треде. Можете по-быстрому что-нибудь спросить.
>>170897055Как буст изучать? Умеешь только в говнокод или крутое можешь чтонть в алгоритмах.
>>170896760Та уже всё, нашёл ошибку спасибо, что отозвался >>170894212
>>170896681Зависит от проекта. У меня сейчас на меге 32-й меге порядка 4000-5000 строк пока что где-то, это около 17кбайт прошивки.
>>170897390> Как буст изучать? Буст - это пиздец, конечно. Годное введение - книжка Антона Полухина, рекомендую. В реальной работе это выглядит, как мучение с кучей чтения справки, экспериментов и т.д. Даже при наличии опыта. >Умеешь только в говнокод или крутое можешь чтонть в алгоритмах.Умею говнокод. "Алгоритмы" эти ваши не представляю кому нужны. Даже сложный алгокод у меня - это комбинация шагов, реализованных в stl+boost. Хороший программист не изобретает велосипеды.
Оп, ты еще здесь? Можешь пожалуйста помочь?
>>170899281Постараюсь.Что случилось?
>>170900492Я няша-стесняша, хочу встречаться с прогромистом.
>>170900735@RecursiveDaun Пиши телега
>>170900492Блин, это не я > >>170900735Короче, у меня как раз таки с объектно ориентированным программированием плохо. Надо одну небольшую штуку написать, а я не знаю как.
>>170893339>Класс, в котором мы контролируем логику программы (очерёдность вызова функций, условия, etc)как будто лабу студенческую увидел
>>170901135Рассказывай. И опять-таки в телегу если есть, ибо гугло-капчу надоело вводить
>>170901161Это плохая идея? 3-й курс погромиста
>>170901184Извини, спасибо, если поможешь. У тебя вообще есть время на это?
>>170901349Полчаса точно. Дальше будет виднее
>>170901219просто человек, который мыслит категориями "очередность вызова функций", "иерархия функций, т.е. в одной функции вызывается вторая" , очевидно, несколько на вы с программированием в целом, и с компоновкой кода в какие-то разумные куски в частности.
>>170901505Бле, а мне казалось, что это правильный стиль написания.А как тогда надо? Подскажешь :3 ?
>>170902096этот стиль написания можно считать правильным. аналогии всегда неверны, но в данном случае это стиль рассуждения трехлетнего ребенка, которому чтобы попасть на детскую площадку надо попеременно двигать левую и правую ногу. это формально верно, но это мелочи, это частности, которые с опытом, причем достаточно небольшим, становятся насколько очевидными, что на них перестают заострять внимание и перестают о них говорить. это как если бы человек в резюме написал, что вот он делал проект и в нем какой-то прости господи паттерн применил.
>>170902559Кажись понял.Спасибо, анон
>>170896323Я когда-то эти занимался, такой стыд сейчас тебя читать. Но да, хуле там на контроллерах, только ногами дрыгать на самом деле.
>>170903029>Но да, хуле там на контроллерах, только ногами дрыгать на самом деле.А что не так? По сути, это его прямое назначение. Что у него есть снаружи, кроме ног?
>>170903633Я когда стал лучшим программером, понял насколько тупо я тогда решал поставленные задачи. Суть программирования именно в создании абстракций и превращении кода из машинного в человеческий. И чем ближе он к человеческому, тем более сложные задачи можно решать.А в микроконтроллерах мы привыкли видеть чистые машины и не видеть конкретные задачи. От этого страдает качество кода. Ну и квалификация инженеров обычно низкая, что уж говорить, просто потому что надо время не на чистую теорию тратить а ещё на всякие понимания Rs232 и 485.В общем ты молодец, что перешёл на плюсы. Осталось только осознать зачем нужно ооп.
>>170903882>Суть программирования именно в создании абстракций и превращении кода из машинного в человеческий. И чем ближе он к человеческому, тем более сложные задачи можно решать.>А в микроконтроллерах мы привыкли видеть чистые машины и не видеть конкретные задачи.Почему? Вот у меня сейчас в проекте неаписанный парсер текстовых сообщений, чтобы осуществлять конфигурирование системы при помощи, собственно, текстовых сообщений. А работа с портом UART - это уже давно там, где-то в глубине программы, я туда уже и не суюсь. Оно работает, есть изначально написанный буфер, я туда уже и не суюсь. У меня есть функции, реализующие поиск там текста и вытаскивание его и выполнение каких-то действий, формирование ответа, тоже текстовым сообщением.Осталось только осознать зачем нужно ооп.Надеюсь, дойду и до этого.
>>170904430>неаписанный парсер текстовых сообщений, чтобы осуществлять конфигурирование системы при помощи, собственно, текстовых сообщенийи что, за такое кто-то деньги платит?
>>170904461Ну да. У нас задача - сделать свой девайс, собственно, модуль. Который будет работать в составе нашего оборудования.
>>170904430Вот в этом и суть проблемы инженерного подхода.Парсер свой, буфер уарт свой, вместо бинарных данных идут реальные строки, я сам таким был и рад что больше не горожу таких велосипедов.Если кратко, ( в универе кстати этому учат, но неправильно) то выделять интерфейсы надо по методологии OSI (уже и название подзабыл) суть в том, чтобы канальный уровень у тебя уарт, но он может и будет потом заменен, поэтому там должен быть абстрактный интерфейс передачи бинарных данных. Над ним должен быть протокольный уровень, типа как ты десериализуешь бинарные данные, а потом уже уровень твоей апликухи с конечными командами.На перформанс это не повлияет, но сэкономит тебе тучу времени, когда вы с карта перекатиться на эзернет, например, или попробуете по Rs485 в общей сетке поработать.Понимаешь? И вот все эти уровни это классы со своими интерфейсами, а тот же уарт это наследник и конечная реализация одного из интерфейсов. Вот тогда оно будет гибко пиздато и на века. (Я не говорю о черезмерном увлечении шаблонами, если что) просто о здравом смысле и сопровождении.
>>170904830какой же ты ебанат
>>170904830Ну и в самом приложении в итоге, тебе не придется руками подписываться на какое-нибудь "прерывание 32". Оно конечно у тебя будет, но именно приложение у тебя просто должно словить абстрактный ивент данные получены, потому что прерывание словил нет драйвер, от него ивент словил протокол, распарсил тебе до уровня апликухи, ну и ты в красивом виде получил свой Останов правого двигателя.
>>170904880:*И я тебя люблю.
>>170894427ну а почему тогда не елсе иф
gv