У Мейерса есть новая книжка, посвященная фичам из новых стандартов cpp11, cpp14. Imho, полезная. Вандервуда и Джоссатиса по шаблонам книга: недавно перевели их новую редакцию с фичами cpp17. В электронном виде нет, по крайней мере не нашел.
Блядь где можно почитать после шарпа о крестах и его ебливом синтаксисе? А то после шарпа все эти хуйни типа ->, ::, : итд смотятся НЕУДОБНО. Все это как я понял обращения к разным тирпм одной структуры.
Но нахуя если все можно сделать через точку, как у белых людей принято.
>>1243403 Ебать гордиться тем что у тебя в говноязыке неоднозначная хуйня. Вот поэтому вас ретраградов никто не любит. На вопрос не можете ответить, так еще и снобизма больше чем у ЛГБТ петухов гордящихся что они ебуться в жопу. Но уровень самореализации примерно такой же.
>>1243416 >Ебать гордиться тем что у тебя в говноязыке неоднозначная хуйня. >Вот поэтому вас ретраградов никто не любит. >На вопрос не можете ответить, так еще и снобизма больше чем у ЛГБТ петухов гордящихся что они ебуться в жопу. >Но уровень самореализации примерно такой же. > на самом деле эти стрелки и прочие четвероточия сильно лучше, чем ОДНА ТОЧКА НА ВСЕ. Т.к. как раз прям по коду можно делать выводы о нем.
Бляяяя, какая же это эзотерика. ШАБЛОНЧИКИ. Неее нахуй нахуй нахуй. Пора писать код и тренироваться, а к этой хуйнё надо идти уже с опытом кода. Читнул про шаблоны, жидко пёрнул и умер от стыда. Пиздец. , пиздец нахуй! "Мы знаем что ты любишь программировать, и мы засунули ещё один ЯП в С++, чтобы ты мог программировать когда программируешь" Шаблоны крута. ЖОПА ГОРИТ!!! Но какая же ахуенна штука всё таки.
Не могу понять, зачем в этом примере в postfix создается дополнительный объект-копия вызывающего объекта. Почему вообще у пре/постинкрементарных операторов разные тела? Разве они не одно и то же делают с разным приоритетом?
>>1243492 Ну, например, я его использовал дважды, но очень удобно - сплит строки в вектор(читаешь из строкового потока, указывая ему конкретный символ конца считывания и собираешь из этого вектор строк) и форматирование даты/времени через iomanip вместо проверок длины значений (я просто лучше способа для этого не нашел) Вполне себе удобная вещь
Доброй ночи. Вопрос по потокам: почему не компилируется и что хотели сделать тут https://ideone.com/s5mTfx смущает попытка присвоить прочитанное из потока указателю без типа while((p=std::cin >> a) && a) Я представляю, что это заработает как раз только когда прочитывается 0, который становится нулевым указателем, но в итоге !0&&0 дают false и в цикл не входим вообще. Однако эта хрень не компилируется вовсе. Что не так?
>>1243187 (OP) Скажите, что за штуки эти аттрибуты. [[где реально это применяется, и на что влияет]] Это еще одна робкая просьба в сторону компилятора типа inline или еще один // комментарий для человека или что это такое? Ни разу не встречал в коде. Нафига оно вообще?
>>1243399 >Блядь где можно почитать после шарпа о крестах и его ебливом синтаксисе? >А то после шарпа все эти хуйни типа ->, ::, : итд смотятся НЕУДОБНО. >Все это как я понял обращения к разным тирпм одной структуры. > >Но нахуя если все можно сделать через точку, как у белых людей принято.
Пиздец тред говноедов, свалил с c++ на java и только рад. зп больше, задачи интереснее, инстументы разработки качественнее, компилится за 5 секунд (в худшем случае). Хули вы страдаете, паргни?
>>1244457 Ох уж этот быдловатый линус с его школьной манерой общения "ну Х короч говно потому что яскозал а если тебе не нравится то и ты говноед и короч не зря я Х говном назвал, только выигрол!!11". Свою поделку на сишке написать смог, а вот вменяемой её сделать не смог. Зато не на крестах. Зато в рассылках можно матом хуесосить несогласных, красноглазым эпатирует образ "бунтаря-нонконформиста".
>>1244477 На Растике не программировал, но все коммон предьявы к крестам, такие как УТЕЧКИ ПАМЯТИ, СЛОЖНО НИПОНЯТНО - все решены в С++11 и далее. Ну, если ты обучаемый, конечно.
Согласен конечно, что в С++ дохуя всяких косяков и хуевых вещей by design. Вот вчера наткнулся на такой пример: std::vector<char> vec = { "a", "b" }; std::cout << vec[0];
Как вы думаете что будет? Хуй угадаете. Вызовется конструктор вектора для итераторов, а все потому, что ахуенный дизайн итераторов через шаблоны, который не позволяет делать какие-то констранты на входные типы ( хотя вроде в с++20 там что-то добавили ) и легаси говнотипы типа const char[] у строк.
По хорошему, надо уже перестать поддерживать легаси код в новых стандартах С++ и выпустить что-то типа С++ 2.0, где, во-первых, будет удалено всякое ненужное и легаси говно, во-вторых, будет кардинально переделана вся система типов, хотя бы даже все эти const char, всякие кучи разных интов в которых хуй разберешься без дефайнов из stdint что в каком размере, будет добавлена рефлексия, что просто необходимо для тех же шаблонных типов и прочего, в третьих, будет переработана стандартная библиотека.
мимо пишу на С++ 10 лет, на Си писал тоже много времени*
>>1244652 >пишу на С++ 10 лет, на Си писал тоже много времени и сишка тебе больше нравится как я понял, да? оно реально там чище и аккуратнее получается или линепс пиздит?
хочется начать твикать уеч(чисто по мелочи допилить уебанское юзабилити, на которое успешные мультимиллиардеры хуй клали), без всякого системного знания, с чего лучше стартовать?
>>1244698 Про чище тут зависит скорее от самого тебя, на сишке можно ахуенно уебищно писать так же как и на плюсах, но если делать все грамотно, то разницы наверное нет. Линус не пиздит, там речь идет о с++03, который на самом деле был довольно уебищный, но тут тоже зависит, многие просто на С++ пишут действительно уебщиные не понятные вещи, слишком используя шаблоны, давая именам функций и переменных непонятные названия, не умея разделять сущности и т.д.
Решил выучить полноценный язык программирования после 1С. Читаю "Bjarne Stroustrup - A Tour of C++". Нравится. Может быть, в будущем стану полноценным прогрмиистом.
>>1244331 Тогда это, получается, тавтология в условии: bool p; while((p = std::cin >> a) && a!=0){...} Любая считанная a кроме 0 в булевой переменной даст true, а проверка, что a!=0 получается избыточной.
Кстати, этот пример не компилируется: cannot convert ‘std::basic_istream<char>::__istream_type {aka std::basic_istream<char>}’ to ‘bool’ in assignment Пришлось заюзать static_cast
Вот, что получилось: https://ideone.com/08eKFd Странно, что не работает rdbuf()->in_avail() Я что-то неправильно понял, или он должен бы вернуть уж явно не 0?
>>1245079 Всё-таки присмотрись к java. После 1C самое оно идти в энтерпрайз. У тебя кроме знания языка, уже будет хорошее понимание предметной области.
Ну и например зачастую получается меньше графомании: std::stringstream stringBuilder; stringBuilder << myFloat << " " << myDouble << " " << cv::Rect(10, 10, 10, 10); //cv::Rect - класс для прямоугольника из opencv с перегруженными операторами return stringBuilder.str();
Ну или если даже вынесем преобразование в отдельный метод, может быть что-то вроде такого: cv::Rect roi(10, 10, 10, 10); str::string result = std::to_string(myFloat) + " " + std::to_string(myDouble) + " " + cvRectToString(roi); return result;
Также stringstream хорош тем, что он единообразно принимает аргументы, что позволяет в некоторых случаях использовать его в шаблонных методах. Если же использовать в шаблонном методе std::to_string от аргумента, то для типа std::string этот метод не будет изкоробки определён, к примеру.
>>1244981 >Тогда это, получается, тавтология в условии: >bool p; >while((p = std::cin >> a) && a!=0){...} >Любая считанная a кроме 0 в булевой переменной даст true, а проверка, что a!=0 получается избыточной.
Байтоебы, а обязательно ли освобождать память в методе класса, если я выделил ее с помощью malloc и присвоил локальной переменной? Или очистка произойдет автоматически по окончании работы метода? Гугл молчит.
>>1245079 Анончик, сколько у тебя стаж в 1С? Город, зп, какие знания? До 1С вообще писал на чем то?
Сам работаю в 1с, думаю перекатиться. . До этого со школы еще с++ изучал opengl там, но в нужный момент не нашёл работу стажёром с++. Пошел в 1с, но не диски разводить, а сразу обновления /доработки. Думал посижу пол годика с++ поизучаю. Но на тот момент было столько всего нового в 1с что уже не до чего было. Так и прошло 7 лет пока не понял что уже потолок по зп и нового изучать особо нечего. + пригорание от осознания себя недопрограммистом
А как правильней? Через поинтер и new? Тогда ведь тоже подчищать за собой надо, только через delete, разве нет? Тогда почему я вижу как malloc постоянно тащат в код каких-нибудь эмуляторов?
>>1245860 malloc - это си-стайл. Если ты хочешь байтоёбить, то делай через new/delete (только не путай потом delete и delete []). Если боишься прострелить себе ноги, можешь память через вектора аллоцировать, например, так: std::vector<uint8_t> myData; myData.resize(100); uint8_t *dataPtr = &myData[0]; Только учти, что вектор и все данные внутри него протухают после выхода из области видимости (и поинтеры на эти данные тоже становятся невалидными), а ещё векторы во время присваивания перекопируются.
>>1245832 > Анончик, сколько у тебя стаж в 1С? Город, зп, какие знания? До 1С вообще писал на чем то? Стаж год с небольшим. Зашло очень легко, делаю что угодно из задач что мне ставят с полпинка. Конфигурация самописная, медицинская система. Именно программист, не диски разносить и не с клиентами общаться. Пишу новый функционал, допиливаю старый, курирую иногда более зелёных программистов.
До 1с в универе на с++/qt писал очень простые программы для курсачей всяких (типа там график по числам из таблицы построить и обработать по математическим алгоритмам). Ну и другие языки типп дельфи там мельком изучались. В школе на флеше делал примитивные игры типа угадаек.
>Город, зп Мухосрань, маленькая. Главный двигатель моего энтузиазма. Можно было бы сказать, что мог мы и с 1с улучшить своё положение, но слишком специфическая конфигурация и задачи у меня, так что не всё так просто. Предметных областей типа бухгалтерии я не касаюсь.
> Так и прошло 7 лет пока не понял что уже потолок по зп и нового изучать особо нечего. + пригорание от осознания себя недопрограммистом Тоже вижу 1с как недопрограммирование с недоперспективами. Я считаю, что я недораскрываю с ним свой потенциал, и что мне по силам освоить любой язык программирования. Тем более что я ещё практически в совершенстве владею английским.
Читаю дальше ту книжку по с++ вечерами и практикуюсь в Qt Creator. Пока всё достаточно понятно, по крайней мере в общих чертах. Дошел до абстрактных классов. Тут как в 1с - сложности на начальных этапах больше потому что хз какие стандартные объекты, методы и т.п. тут есть и вообще что где находится. А так, мне например доставляет, что гуй на кутях делается 1с-стайл с формочками, элементами, событиями и т.п. - уже легче. Да и вообще в плане написания алгоритмов, все знания с 1с перетекли сюда, просто синтаксис другой.
1с после плюсов кажется деревянной игрушкой, прибитой к полу. Вот бы было заебись, например, если бы там можно было создавать свои классы и дополнять новыми методами стандартные. Кстати сразу видны параллели с 1с и понятно почему некоторые вещи там работают именно так - саму 1ску то на плюсах писали.
Даже если не стану профессиональными погромистом на плюсах, хотя бы повышу свою компетентность в программировании в целом.
>>1245832 >Так и прошло 7 лет пока не понял что уже потолок по зп и нового изучать особо нечего Минутку? У 1С разве не больше по зп чем у среднего плюсплюсника? А как же девочки?
ща кароче проснулся попёхал в него поломанный пакет, попытался собрать свежий пакет из сорцов, пакж билд ругнулся на путь, нешмог с локальной папки завестисть, либо ему не хватало гитхаб дотфайла который я уже успел удалить, энивей >_> похуй нахуй
щас все само ожило, так что ня ^__^
>>1246160 >на кошерной винде которую я специально недавно поставил в дуалбут -- все тоже самое, только еще хуже блядь, без кастомайза, зато с бабл феечкой в пуске, ну норм чо
через лончер тянется ТАКЖЕ блядь долго, у меня 100 мегов, и как бы я реально охуел, я уже и забыл, но инсталл 4.19 у меня занял те же пол дня
не говоря про то что дело было на харде, и это сущий ад, паскуда мразь вечно чето тащит, айо хдд по пизде, а ты и сидишь как говна в рот набрал, капчуешь с тормозами, норм чо
>переоцениваешь свои возможности тебе уже пора на дно лягушон
>возможностей на кривых линупсах куда больше это самые кривости починить и сделать под сибя, на вендах ты ешь что дают
а я модно молодежно охуенно без сраных рамочек меняю размер окошка через альт+пкм мммм кайф
>>1246160 >Потому что на кошерной винде не сидишь Под линкусом с конпеляцией все в разы удобнее. Под винду все кросскомпилирую мингом, потому что все пакеты для всего есть. Иногда бывает максимум пердольства, но под виндой все хуже, особенно без msys2.
>>1246214 >Ебанутый Расскажи это Уолтеру Райту, который прибил стандартную либу к языку гвоздями, а потом 10 лет ее мучительно пытался оторвать. В расте такой ошибки уже не стали делать, они обучаемые.
>>1246327 нашел где спросить лолка, они на офф форуме гасяться и хуй кладут когда их прямо спрашивают хуле у вас тут насрано?
кароче из под этого говна все так же как из сосноли запускается, просто команда с ключами висит на кнопошке или хоткее, и то ее хуй настроишь под уеч заебанный блядь, а значит вижстудные дауны с форумов пожрали говна, со своими ололо сборщиками И ДЖЕ ЭЕА
Гоните этого питуха нахуй, он засирает треды своими постами о визуальной составляющей линухов, de и редакторах, как же он заебал всех в /s/ и питон-тредах.
Надо сделать приложуху для манипуляций с графами (всякие там алгоритмы и т.д.). Получится это сделать в qt? Что-то я не смог нагуглить ни одного примера.
Или может KDE на hidpi хорошо начал работать? Я порой такое говнобаги ловлю, что начинаю сомневаться, что KDE вообще компилится.
А дрова nvidia, который хуй знает как работают? Ой, а может новые дрова AMD нормально ставятся на не убунту? на деле даже на убунту не с первого раза поставил
Ой, а как там wayland с nvidia поживает? VNC/RDP давно настраивал? Может скажешь мне навскидку клиент rdp, который умеет в два монитора? Вот и весь попенсорс, который не двигается корпорациями. Из всего этого чуда на линупсе у меня нормально работают только продукты от Jetbrains, Chromium и Telegram.
>>1246633 Настройка окружения = ёбля. Этой хероты на работе у каждого хватает, сюда люди не за этим приходят, а чтобы обсудить работу с памятью, контейнеры, поумничать, обкашлять вопросики. Хотя перед кем я распинаюсь. Хотя шизик неплох неплох. Такие уже в красной книге двача обитают. Пускай может у нас переночует?
создал обычный блюпринтовый проект, а в нем уже крестовый класс и как только создал он сразу начал сам комплёхать сучара блядь и открыл вскод который я указал в настройках в самом движке и тут же проект становится крестовым, появляется кнопка компила в тулбаре
ЕБАННОЕ ЭЛЕМЕНТАРНОЕ ГОВНО СУКА ДЖВА, НЕТ ТРДЖИ ДНЯ РЕИНСТАЛОВ И ЕБЛИ И ХОТЬ ОДНО БЫ МУЛЬТИМИЛИАРДЕРСКОЕ ГОВНО НАПИСАЛО В ВИКИ ПРО ЭТО
сука блядь как же горит, а вы еще чето жалуетесь, чето там не можите понять хуйнять, когда У ВАС СУКА ВСЕ ТУПО В КНИЖКЕ НАПИСАНО С ПРИМЕРАМИ тут же лазаешь как мудак по протухшим форумам, качаешь всякое говно, пытаясь по пути понять суть
уууух блядь ненавсить
ну да ладно, теперь то наконец попробую подтыкнуть спизженный китайский плагун ^_^
>>1247034 Не совсем, он должен представлять комплексное решение задачи. Архитектура\бест практис\неочевидные особенности языка и все такое подкрепленное опытом
>>1247073 >Как нагуглить актуальные бест практис по С++ Это хороший вопрос. Плюсы строятся на бестпрактисах. Собственно даже отдельные языки из плюсовских бестпрактисов отпочковались.
>>1243187 (OP) помогите мне пожалуйста, разбираюсь с библиотекой OpenCV на плюсах, использую структуру Mat, считываю в неё картинку, применяю встроенную функцию cv::transpose для транспонирования, и после этого пытаюсь использовать также встроенную функцию cv::multiply. И она почему-то не работает. Подскажите почему пожалуйста.
>>1247468 Там же все написано. Не совпадают размеры переданных массивов. Хочешь разобраться, почему ошибка - почитай про перемножение матриц, если нет - проверь, чтобы у тебя совпадали размеры всех трех матриц.
>>1247634 >Де-факто стандарт индустрии как и шмакс и шмая, но они от этого не перестают быть убогим говном, которым пичкают рабов в студиях, за которые начальство получают откаты
у тебя сознание пораженца, ты уже сам себе разработал сракотан и приоткрыл ротик, уверен у тебя все получится ;)
САП! Пытался писать функцию брейкпоинта на память, но как-то вообще не понимаю, что к чему. Функция должна вернуть адрес инструкции, обратившейся к адресу в памяти. В инете есть кое-какая инфа, но я вообще не вдупляю ппц и из-за этого чувствую себя хуже, чем обычно :/
>>1247833 Не силен в guard page'ах. Чем отладочные регистры не угодили?
На пике Test 1 в цикле печатает адрес и значение volatile uint64_t x = 0xDEADBEEF.
Debugger находит поток Test 1, ставит себя отладчиком, заливает потоку в контекст DR0 с адресом x и соответствующими флагами в DR7 (бряк на чтение/запись 8 байт по адресу в DR0), в цикле ловит EXCEPTION_SINGLE_STEP и подменяет значение в R8 на 0xFEEDB00B.
>>1248065 так аппаратных бряков всего 4 на поток. Да и до них я пока не дошёл, остановился на guard page(нормально так остановился) Смотрел исходники x64dbg, пытался делать ,как там, но чет увы...
>>1248185 > так аппаратных бряков всего 4 на поток. А тебе больше нужно? Ты полноценный дебаггер пишешь или лабу?
> Да и до них я пока не дошёл Через отладочные регистры даже проще ибо в работе guard page'й насколько я знаю есть кое-какие нюансы.
> Смотрел исходники x64dbg, пытался делать ,как там, но чет увы Пикрелейтед: сделал как у тебя, ставлю PAGE_GUARD странице памяти с переменной, ловлю EXCEPTION_GUARD_PAGE, в ExceptionInformation (Param[1] на скрине) прилетает адрес в памяти, после этого устанавливаю флаг трассировки и ловлю EXCEPTION_SINGLE_STEP.
Тащемта у тебя код почти все то же самое делает вникать в него и искать где ты ошибся я конечно не буду :3 Если ты понимаешь как он работает, то я не понимаю какие у тебя проблемы.
Ребят, смотрите Есть приложение А Есть DLL Б Можно ли заинжектить DLL Б, представленную в виде массива байт, заинжектить в процесс А не используя Manual Mapping? Если да, то дайте ссылку, где есть пример такой реализации, или может сами чего подскажите, пожалуйста :)
>>1248435 Мб я не до конца понимаю. Нужно словить EXCEPTION_GUARD_PAGE, установить флаг трассировки и ловить EXCEPTION_SINGLE_STEP и когда словил проверять адрес debug.u.Exception.ExceptionRecord.ExceptionInformation[1]? И если адрес верный, то выходить из отладочного цикла? Иначе восстановить PAGE_GUARD ?
>>1248630 Нет. EXCEPTION_GUARD_PAGE вылетает в момент обращения к памяти с PAGE_GUARD, место возникновения (адрес обратившейся к памяти инструкции) будет в ExceptionRecord.ExceptionAddress. Если это все что тебе нужно, то флаг трассировки вообще не надо ставить, он нужен для пошагового выполнения программы (процессор с этим флагом сам генерирует прерывание после каждой инструкции), я его ставлю и выполняю еще одну инструкцию просто чтобы 0xDEADBEEF в регистре увидеть. Мало того, отлаживаемая программа с этим флагом тут же упадет если не будет отладчика который будет обрабатывать эти прерывания.
Адрес в ExceptionInformation[1] нужно проверять при обработке EXCEPTION_GUARD_PAGE, туда должен приходить точный адрес в памяти куда инструкция обратилась, в EXCEPTION_SINGLE_STEP там вообще ничего не должно быть. Ну и да, проверяешь его и снова ставишь PAGE_GUARD если программа обратилась не туда куда тебе нужно или выходишь из цикла, не забудь ContinueDebugEvent.
Учти еще что WaitForDebugEvent(&debug, INFINITE); не вернет управление пока не поймает событие.
>>1243448 Крч у постфиксной и префиксной максимальный приоритет. Префиксная увеличивает значение и возвращает объект. Постфиксная увеличивает значение, но возвращает объект до увеличения значения. Напиши чет тип i=2; a=++i; b=i++; Поймешь суть. Постфиксная именно по назначению оч редко юзают
>>1248804 Напишешь производительный код, который на 5-10-15-20% быстрее читаемого кода, а потом через три месяца будешь сам от него плеваться, когда надо будет внести изменения или дебажить. Ну или другой челик после тебя придёт и будет тебя проклинать.
Есть два приложения. Одно написано на C++, а другое на Java. Возникла необходимость использовать первое и второе в своей программе. Программа на Java грабит странцы и предоставляет информацию в базу данных. Программа на C++ раз в секунду проводит опрос базы данных на наличие новой инфомрации, и если она есть, то начинает ее обработку.
В общем, мне кажется, что организация работы через базу данных это костыль. Какие существуют методики интеграции нескольких приложений написанных на разных языках, но на одной платформе в одну единную систему с учетом того, что части системы связаны между собой по подобию сигнал-действие?
>>1249752 >всё же все приложения находятся на одной локальной машине. Это никак не препятствует использованию кролика. Можешь еще https://redis.io/topics/pubsub глянуть
>>1249845 Шмем плох тем, что его без дополнительных приблуд вроде оповещений по другим каналам связи трудно использовать для динамического контента. Туда сложно запихнуть какие-то сложные объекты вроде очередей, чтобы ничего не руинилось в многопоточной среде. Ещё DBus есть и In-Memory Data Grid, но я их не пробовал.
>>1249848 Яхз что за DBus и In-Memory Data Grid. Это из буста что то? Я про базовый линуксовый ipc рассказал этому анону. Shared memory можно просто как разделяемые данные с семофором юзать и все.
В 14 лет трогал перл. В 16 трогал Си. В 18 трогал жс. В 21 трогал хуй. Хочу как бы заново вкатиться в кодинг, попутно структурируя и вспоминая все то, что забылось уже давно. Есть ли какой-то смысл начинать с голого Си или же можно сразу окунаться в Си++? ООП не трогал никогда
>>1249915 >ООП не трогал никогда и не нужно, функциональщина топчик, полиморфизм зло
зачем вкатываешься, когда ответишь себе, тогда и поймешь
можешь мельком глянуть туторы на тубике, пожалуй байтоебские видосы с руссеком на мвс это единственный русский контент разрешённый к просмотру минздравом
>>1250173 >всратые они в голове в первую очередь, функция мобильного инкубатора предопредляет сознание и развитие индивида в целом, они всегда будут лишь серыми посредственностями, усидчиво копируя то что превозмогая биопроблемные лишения создали мужчины
ну а красота это в первую очередь харизма и внутренняя уверенность, что напрямую связано с успехами в проффесиональной деятельности, сракой за дорого торговать тащемта тоже надо уметь
и да человек в принципе мммаксимум энергоэффективное животное, а мозг дохуя ресурсный, поэтому если фартануло с дойками и жеппой, можно даже со стремным ебалом и колхозным мейком найти себе татарина с нефтянки
>>1250408 Ну нет же. На си ты хуй напишешь большие приложухи (или очень долго). На крестах больше инструментов чтоб большие приложухи писать. Си это ардуино и прочая х%уйня, кресты это браузеры, базы данных, медиа проигрыватели и тд.
>>1243399 Как стать успешным кодером: >Без базовых знаний си и крестов попытаться выучить шарп. >Поняв что все хуйня и пора начинать по новой попытаться вкатиться в кресты. >Озалупиться от непривычного синтаксиса и винить в своей тупости язык. >Жидко покакать об этом в тред.
>>1251861 Только хардкор, только 6мс на каждую итерацию главного лупа на Pentium 4 с таким-то графоном и задержкой между графоном, звуком и инпутом, которой позавидует Beatmania: STL (чуть-чуть, только для строк и векторов) Графон: OpenGL Музон: XAudio2/ALSA Окна: WinAPI/Xlib
>>1243187 (OP) Я тут охуел с шаблонов, точнее с variadic template. Ебать это инструмент богов похоже ептубля. /r годную литературу по метапрограммированию. Алсо /r годную литературу по современному(с 11 по 17) цэпэпэ.
Читаю С. Прата - Язык программирования C++. Лекции и упражнения. Дошел до 14 главы - "Множественное наследование" . И есть один код: https://ideone.com/5A6dST Почему-то, когда я добавляю в базовый класс функцию virtual void ShowData();, то компилятор начинает ругаться на: --------------------Configuration: 14.5 - Win32 Debug-------------------- Compiling... 14.5.cpp error C2250: 'highfink' : ambiguous inheritance of 'manager::ShowData' emp.h(32) : see declaration of 'manager' error C2250: 'highfink' : ambiguous inheritance of 'fink::ShowData' emp.h(50) : see declaration of 'fink'
emp.cpp error C2250: 'highfink' : ambiguous inheritance of 'manager::ShowData' emp.h(32) : see declaration of 'manager' error C2250: 'highfink' : ambiguous inheritance of 'fink::ShowData' emp.h(50) : see declaration of 'fink'
>>1251982 Я в этом не силен(у меня пока плюсы - это си + std), но при первом взгляде на код и ошибку предполагаю: ругается на то, что не может определить, от чего наследовать, а ты написал ошибку "множественное наследование". И задался вопросом: а нахуй тебе добавлять virtual void ShowData() в protected, когда он уже есть в private? Определись и оставь что-то одно
>>1252073 >а нахуй тебе добавлять virtual void ShowData() в protected, когда он уже есть в private? Определись и оставь что-то одно Опечатка. Даже если я убираю ShowData() из protected, то ошибка компиляции все равно остается.
>>1252076 А, смотри. У тебя же highfink наследует сразу от двух классов, вот и не может определиться, какой showData ему брать. Я точно не уверен, но, кажется, в том классе, от которого не надо брать этот метод, нужно его определить как final
>>1252210 Это я уже понял, что нужно вызывать с явным указанием класса. Но тут ситуация немножко иная. У меня в конечном производном классе вообще нету переопределения этого метода. И получается, что компилятор не знает от какого предка наследовать этот метод.
Перефразирую свой вопрос. Получается, что строя иерархию классов как на пикрелейтед, я всегда буду получать "непоределенное наследование" в конечном производном классе?
>>1252370 >У меня в конечном производном классе вообще нету переопределения этого метода. Особо разницы нет. Так как ты публично наследуешь эти два класса, то ты в принципе сможешь вызвать у объекта класса employee функцию ShowData(). Например, так:
void foo(const employee& e) { e.showData(); }
Если ты передашь в foo экземпляр класса highfink, что программе вызвать?. Компилятору нужно заранее знать, что именно будет вызываться у этих highfink-ов (если хочешь углубиться, можешь почитать про vtable). Но он не может этого сделать, Поэтому ошибка. Единственный выход: всё-таки сделать конечный оверрайд. Если ты уж совсем не хочешь его "показывать наружу", то можно сделать его приватным: https://ideone.com/knUeZt
Пытаюсь исполнять машинный код при помощи апишного VirtualAlloc значит... Но почему-то оно выдает exception на то, что я пытаюсь лезть в защищенные области памяти. Как это объяснить? https://ideone.com/ZtKovP
>>1252553 Что у тебя на странице с кодом? Идёт два нопа, потом нули (если верить https://c9x.me/x86/html/file_module_x86_id_5.html, то это ADD r/m8, r8, то есть получается посто целая страница add al, al). Потом страница заканчивается и начинается уже защищённая, на которой у тебя и падает.
Чтобы убедиться, посмотри на адрес VirtualAlloc, и затем на адрес исключения. В моём случае память была выделена в 0x00DD0000, а исключение случилось в 0x00DD1000. Размер - ровно страница. Совпадение? Не думаю.
Решение: добавь RET (0xc3) после нопов, выйдет из функции нормально.
Возможно тупой вопрос, но тем не менее, у меня есть моя библиотека и программа на основе неё, где мне держать эту скомпилированную библиотеку в Windows? Просто в Linux обыно все заголовочные файлы помещают в /usr/include, а библиотеки в /usr/lib. Просто у меня моя библиотека, сторонние библиотеки, моё приложение и как всё это правильно структуризировать для удобной кросплатформенной системы сборки я не совсем понимаю.
>>1253066 Обычно в одной папке с приложением под виндой дистрибьютят. Не знаю, есть ли смысл заморачиваться и куда-то ещё кидать.
За что мы любим C++Аноним27/08/18 Пнд 09:27:25#239№1253468
#include <new>
int main() { struct S { int i; ~S() {} } s; // создаём объект int& ri = s.i; // байндим ссылку на его мембер, т.к. скоро мы не сможем пользоваться s s.~S(); // заканчиваем лайфтайм s ri = 0; // но при этом лайфтайм его мембера не заканчивается, ссылка валидна!
::new (&s) S; // пересоздадим объект, т.к. иначе будет UB из-за вызова деструктора при завершении main }
Появилось свободное время, наконец-то настроил драйвера на убунте под радеон р9 390 и смог запустить тестовую прогу-куб от vulkan-api. А как дальше разрабатывать? Как это выглядит? Где писать исходники под вулкан? Иде какое-то есть? Скриншот доказывающий что не пиздабол.
>>1253475 >Появилось свободное время, наконец-то настроил драйвера на убунте под радеон р9 390 и смог запустить тестовую прогу-куб от vulkan-api. А как дальше разрабатывать? Как это выглядит? Где писать исходники под вулкан? Иде какое-то есть?
Забей на вулкан, тебе очень не понравится, он матерым-то байтоблядям-плюсоблядям рвет пукан, а для тебя это вообще будет как если тебе в пердак влетит дилда размером с пассажирский поезд со сверхзвуковой скоростью - ты не то что подгорание - ты даже понять ничего не успеешь, сразу на кузки после первой же строчки разорвет.
Короче, концепция такова, что ты вместе с игрой пишешь еще и половину драйвера видеокарты.
>>1251959 Ну что же вы, бэтманы? Неужели никто не интересуется таким или я в шары долблюсь и ответ где-то в шапке или что-то вроде того? Так я смотрел, не нашёл.
>>1253823 Читай референсы, смотри cppcon и смотри реальный код библиотек. Хотя бы тот же std::variant. Но я умоляю тебя. НЕ ПЕРЕБОРЩИ, СУКА. Я только неделю назад словил пятикилометровую ошибку компиляции, потому что какой-то умник решил запихнуть функции (тип которых определяется темплейтом) в массив и вызвать энную, исходя из определённого компайл-тайм условия (которое определяется через хренову тучу sfinae-структур).
Используй только там, где действительно нужно обобщённое программирование. В 99% случаев оно усложнит код, сделает компиляцию медленной, и вообще, не надо.
>>1253623 >>поставь винду Я под линуксами более менее выучил кресты. В линуксах кресты легко установить, есть дохуя иде. Под виндой чёто не взлетело, а в визуал студио вообще свой язык.
>>1253797 Зависит от того, на чем ты окна делаешь. На винапи - при регистрации класса окна, вроде, указываешь путь к иконке. Есть где-то гайды от мелкософта по этому поводу, главное - поищи нужную процедуру, это будут относящиеся к созданию окна. Если что-то вроде SDL - то обычно с библиотеками и SDK поставляются запускаемые примеры и проекты/код, можешь там поискать, как это делать.
Анонии, чем можно дополнить кнежку на пике по теме практики? Типо задачки на массивы-хуивы, крестики-нолики. мб тыртырнет курсы есть какие? Всех чмоки-чмоки :з
Сап парни, такая проблема: не вызывается деструктор собственный. MS Visual 2017. Сейчас в пример дам простейший код, через отладчика тоже в деструктор не залетает. Это я рукожоп что-то упустил или компилятор сломался? #include <iostream> #include <cstdlib> using namespace std; class MyCopy { public: MyCopy() { cout << "Вызвался конструктор" << this << endl; }; ~MyCopy() { cout << "Вызвался деструктор" << this << endl; }; }; int main() { setlocale(0, ""); MyCopy a; system("pause"); return 0; }
>>1253839 Охуеть, анон, да это же ёбаный хаскель! Только обфусцированный до невозможности, но это похуй! Ебучий хаскель внутри ебучих крестов! Охуеть! Охуеть! Хуй стоит! Кресты язык богов. ушёл писать монаду
>>1255015 Деструкторы вызываются после того, как начинается выхож из блока - анон выше сделал отдельный блок, в котором вызвал конструктор; по его завершении автоматически вызывается деструктор и все окей.
А в твоём случае вызов деструктора будет только после return 0, когда уже программа заканчивает работу - потому ты и не видишь вызов деструктора.
Хотя cppquiz считает, что и твой код должен инициировать вывод в консоль, но я проверял их примеры в студии - и как у тебя, нихуя нет.
>>1255392 Ок, моя ошибка. Как сделать так, чтобы при всём этом, лямбда принимала любую функцию? Сейчас я могу сделать вот так: https://ideone.com/FgBU3F
>>1255418 https://ideone.com/WNdrrB Вот общая идея, тебе остается только написать код для вытаскивания шаблонных аргументов RET и ARGS из VAL через специализацию, чтобы их не указывать. (RET можно достать через std::result_of, как аргументы хз, возможно придется писать вручную специализацию для std::function.) И возможно спрятать все это в шаблонную функцию. Мне лень это доделывать.
>>1255157 (Невиртуальные) функции класса - обычные функции, которые принимают скрытый указатель this. Ты им не воспользовался - прога не сдохла. Вот если сделать функцию виртуальной (и компилятор её не девиртуализирует), то обращение к ней будет через vtable. А указатель на объект нулевой, значит vtable тоже в нуле и указатель на функцию тоже нулевой - прога тогда сдохнет.
>>1243187 (OP) Есть крестовый код написаны в си стиле. Нужно создать класс/шаблон/макрос или какую-нибудь другую хуёню-обёртку чтобы было легко вызывать одну функцию перед вызовом каждой уже существующие функции и эта одна должна бросить эксепшен если что-то не так, а если всё ок, то просто прекращается и вызывается правильная функция. Чтобы можно было писать что-то типа Funcs::FuncName(Arg1, Arg2); и перед тем как вызовется функция FuncName это штука должна вызвать другую функцию, но её имя не надо каждый раз писать при вызове FuncName. Ну надеюсь вы поняли. Как это сделать красиво?
>>1256064 Ах да забыл добавить, что код уже написанных функций менять нельзя. Нужно создать новый файл для этой хуйни и там инициализировать её всеми уже рабочими функциями
Как объединить 2 переменные типа int в 1? Есть a = 4 , b = 3; Нужно чтобы c = 43. В интернете находил решение в 5-6 строк, думаю можно как-то легче это выполнить. Не обоссывайте, я недавно начал изучать язык.
>>1256064 Ну вот вообще не понятно, что ты написал? Хочешь обёртку? Вызывай нужные функции в нужном порядке там. Хочешь что-то типа Aspect-oriented programming?
Начал я тут читать Страуструпа, и не могу понять такую штуку, которую он часто использует, но толком не объясняет. Зачем в одном классе задавать два таких оператора:
T& operator[](int i) {...}
const T& operator[](int i) const {...}
Вот посмотрим на второй оператор. Тут первый const вроде указывает на то, что мы можем его использовать только как rvalue, второй const - что его код не должен менять состояние объекта. Тогда: 1) Почему в первом операторе не используется второй const, если в нем мы тоже не должны менять состояние объекта? 2) Зачем нужен вообще второй оператор, код которого ничем не должен отличаться от первого, но на который наложены ограничения?
>>1256360 >Начал я тут читать Страуструпа А надо было С.Пратта
>1) Почему в первом операторе не используется второй const, если в нем мы тоже не должны менять состояние объекта? Первая функция - для изменения элементов массива. Вторая - только для чтения.
>2) Зачем нужен вообще второй оператор, код которого ничем не должен отличаться от первого, но на который наложены ограничения? Как писал Пратта - ошибки проще отлавливать на этапе компиляции. Если у тебя в программе по задумке идет считывание данных массива, а ты по-запарке пытаешься их изменить (ну например, проебался с == и = ), то компилятор тебе сразу укажет на проеб.
>>1256369 Пратта почитаю потом тоже, и Липмана почитаю, главное с чего-то начать
Но за этот запрет изменения элементов массива отвечает первый конст, который перед возвращаемым значенем, а второй - за то, что в фигурных скобках, разве нет? в коде в фигурных скобках ничего не меняется, он просто по идее должен сформировать и вернуть значение по ссылке, ну а дальше пофиг что с этим значением происходит. Или нет?
А во втором вопросе я имел в виду - зачем вообще в рамках одного класса два почти одинаковых оператора использовать. Хотя сейчас понимаю, что он наверное просто для примера привел, что типа можно и такой и другой, а меня это сбило.
>>1256371 >Хотя сейчас понимаю, что он наверное просто для примера привел, что типа можно и такой и другой, а меня это сбило. Нет. Нужны ОБА метода.
>зачем вообще в рамках одного класса два почти одинаковых оператора использовать. Ну я же тебе говорю. Ты своим функциям должен оставлять самый минимум пространства для маневра, чтобы потом не проебаться. Вот зачем использовать спецификатор const, если можно и без него хуячить? А затем, чтобы если по логике у тебя переменная - константа, то при попытке ее изменить компилятор теья сразу нахуй посылал прям текстом. Иначе бы пришлось тебе из-за маленького и незаметного проеба (ну например, ты хотел написать в коде if(a==5,) но проебался и написал if(a=5) ) сидеть и ломать голову - а хуле моя прога работает не так как я задумал?
А теперь расширь всё что написано выше на свой пример. Пишешь ты класс, который что-то делает как массив. Ты хуяришь код: >T& operator[](int i) {...}
Всё норм. Потом ты такой сидишь и думаешь - а если мне нужно только лишь, например, вывести элемент массива в консоль, где гарантия, что я не попорчу свой массив? Нет гарантий, ведь твой метод может и перезаписывать данные. Тогда ты создаешь точно такой же, второй метод. Но только связываешь его по рукам и ногам спецификатором const: >const T& operator[](int i) const {...} ...справа - гарантия, что метод не изменит данные ...слева - гарантия, что возвращаемый объект не даст в себя ничего записать. Как пример второго метода: допустим, твой класс содержит массив строк. T MyClass >и тут ты проебался по-пьяни, и вместо вывода на консоль набыдлокодил ввод. cin >>MyClass[0]; Благодоря второму методу с const компилятор сразу отругает тебя в стиле: "Хуль вы, сударь, пытаетесь хуячить в переменную, которая только для чтения?" А если бы этого метода у тебя не было, а был бы только первый вариант, то программа собралась и заработала. Только вместо положенного она тебе выдавала бы хуйню. А ты бы сидел и думал - схуяли баня загорелась?
>>1256378 Ну вот как раз по примеру, который ты приводишь: компилятор видит, что я делаю ввод и следовательно из этих двух операторов выбирает тот, который без констов, и все норм компилится. Зачем тогда оба метода спрашивается? тем более и код у них скорее всего будет идентичный.
>>1256380 Ты заебал, за тремя соснами леса не видишь. Хочешь чтобы я тебе в 3 ночи примеры без ошибок приводил? Я тебе описал общий смысл для чего это делается. За всем остальным - С. Прата 4ое издание (более понятный язык) стр. 562-563. Либо 6ое издание - стр. 612-613.
>>1256380 Если твой класс ведет себя как массив, то скорее всего в нём есть указатель на данные. Обычно когда у тебя есть const объект, то ты предполагаешь, что константны не только его члены но и данные за которые он отвечает. const как спецификатор метода говорит, что вызов метода не изменит значения этого указателя, но сами данные менять то можно. Поэтому: - метод T& operator[](int i) {...} нужен для не константых объектов. Он позволяет менять данные возвращая их по обычной ссылке. Он не объявлен как const позволяя вызвать себя только на не конст. объектах. - метод const T& operator[](int i) const {...} может быть вызван как конст. так не конст. объектом. Второй конст говорит, что при вызове не изменятся члены класса конечно если они не mutable, а первый - что ты не можешь менять получаемые данные. Так достигается логическая константность объекта.
int main(){ 2chvector<int> a {1,2,3,4,5}; const 2chvector<int> b {6,7,8,9,0}; std::cin >> a[1]; // #1 std::cin >> b[1]; // ошибка компиляции, потому что в #1 нет спецификатора const и он не может работать с const объектами, а #2 может, но запрещает запись }
>>1256281 я не знаю крестов с их ООП и что такое Aspect-oriented programming. У меня есть куча процедур в файле utils.cpp. в мэине они вызываются как a, b, c. мне теперь нужно создать файл detect.cpp и в нём что-то прописать. Не знаю что. У вас спрашиваю. Чтобы потом отредактировать в мэйне вызовы функция a, b, c совсем чуть-чуть и в результате перед вызовом самих этих функций каждый раз вызывалась ещё одна функция f. она уже написана и работает. Осталось только как-то сделать ту штуку, которая обёртка для вызова f перед каждой функцией a,b,c. просто меняешь в инклюдах utils на detect и немного меняешь вызов самих функций например не a(), а func::a() и всё работает. В коде функция f даже не упоминается, но перед каждым вызовом a она вызывается. Никакой инициализации этого врапера. Всё делается в момент компиляции. Как такое сделать?
>>1256576 Ебать, анон ты меня огорчаешь. Неужели это так сложно? В файле detect.h объявляешь свои новые ф-и a1, b1, c1 В файле detect.cpp инклюдишь utils.cpp, если ф-я f больше нигде не нужна определяешь ее тут же даже static дописать можно. Ну и сами обертки имплементишь: тип_возврата a1(...) { f(...); a(...); } и так с остальными.
Реквестирую картинку где книга по программированию в мусорном ведре с супом. Там еще в ведре была тыква и книга вроде была по С++. Или подскажите по каким тегам гуглить. Не смог найти.
>>1253797 Если нет возможности задать в студии, то обычно срабатывает первая иконка, лежащая в ресурсах. Т.е. у тебя в .rc-файле (или res/resx) должно быть что-то типа 1 ICON "icon.ico" и тогда при линковке иконка попадёт в экзешник и будет отображаться.
>>1243187 (OP) Хочу вкатиться в олимпиадное программирование на С++ с нуля. Только проблема, что курсы моего уровня нашёл только с питоном. Можете что подсказать?
Анон, так как всё-таки правильно создавать потоки в QT? Тут пишут https://habr.com/post/150274/ что наследоваться нельзя/ненадо. Но в куче других источников используется исключительно наследование. Как правильно?
If you do not really need an event loop in the thread, you should subclass. If you need an event loop and handle signals and slots within the thread, you may not need to subclass.
Может кто подсказать, почему этот код в копиляторах не работает? Это связано с новой версией языка или что? В книге описывается, что он должен забирать подряд все введённые значения и суммировать их, на деле же я просто ввожу числа и нихуя не происходит. cpp.sh/3akpk
>>1258359 Лол блять, я так понимаю цикл будет идти пока условие выполняется, в этом смысл упражнения? А то слабовато понял. Можно его прочитать как: пока идёт ввод - записуем - суммируем ?
Я снова здесь, с еще одним вопросом. Почему код не может найти эту функцию в файле? Иду сейчас по Липпману, 1 глава, написано подключить файл и делать упражнение. Код 1 в 1 скопирован с учебника, как и сам подключаемый файл, но при компиляции даёт ошибку, что такой функции в етном файле нету и пошёл я нахуй. Код упражнения cpp.sh/4cpux Код подключаемого класса cpp.sh/5e4nd
>>1258912 >private: >std::string isbn; >@ >item1.isbn Ахуел напрямую лезть в закрытый раздел? Он для того и закрытый, что доступ можно получить только через открытые методы.
>>1258917 Бля, спасибо большое. Нахуя он это сделал я не пойму. Или это кто-то из раздающих поменял. Пиздец, больше 2 часов сидел и гуглил ответ, а там просто одно слово поменять, я в ахуе. >>1258922 В факе была эта книга, ее и скачал. После такой хуйни скорее всего перейду на твой вариант
>>1258912 >при компиляции даёт ошибку, что такой функции в етном файле нету и пошёл я нахуй. Ты еще и в английский не умеешь. Он тебе пишет, что у тебя НЕТ ДОСТУПА к этому элементу.
>>1258938 Так и сделал, обьясните как получить доступ к этому файлу. Я язык начал изучать позавчера, в книге просто описывается пример и никаких заморочек
>>1258949 Ну сравнение isbn там вроде производится через bool same_isbn(const Sales_item &rhs) const { return isbn == rhs.isbn; } Попробуй какую-нибудь книгу полегче. Шилдта например.
>>1258966 Там выше анон Прата порекомендовал, она 2005 года. Ничего страшного не будет, если я по ней буду изучать? Читал где-то что каждые 3 года стандарты языка меняются, и книги становятся не актуальны.
>>1258949 >обьясните как получить доступ к этому файлу. Это, блядь, нихуя не файл. А элемент данных, находящийся в закрытом разделе класса. В этом то вся и фишка классов, что ты пихаешь данные в закрытый раздел. Дальше хуяришь функции, которые манипулировать этими данными, в окрытый раздел. И напрямую ты никак не должен получить доступ к закрытому разделу.
Если тебе нужно сравнивать isbn двух объектов твоего класса, то один из вариантов это реализовать в открытом разделе функцию, которая будет возвращать isbn. Например: >public: >std::string GetIsbn() >{ >return isbn; >}
А дальше сравнивать так: >if( item1.GetIsbn() == item2.GetIsbn() )
>>1258970 >Прата Хз, не читал. >Читал где-то что каждые 3 года стандарты языка меняются, и книги становятся не актуальны. Так то да, стандарт меняется, но большого греха в изучении старых стандартов нет, потом/в процессе изучения будешь просто подтягивать новые знания.
>>1258983 >Сап двач каку книгу для ньюфага лучше начать изучать. В шапке их 3 но какая из них лучше? С. Прата, издания до 4го включительно. В более поздних переебали перевод не в лучшую сторону. Хотя если до этого ничего не читал, то может и зайти.
>>1259004 Думаю что да. С++ Настолько объёмен как некий кракен, и что изучая его весь очень нескоро доедешь до шаблонов. А они сами по себе не столько фича языка сколько некий философский паттерн мысли к которому пришло современное программирование, и который в принципе применим ко всему программированию нежели только к C++. Почему бы сразу не начать понемногу понимать его, тем более что в книге есть и подводящие к нему главы описывающие основную систему языка.
Анон, читающий Липмана, читай про public и private внимательнее. Сам сейчас читаю эту книгу.
Переменные-члены класса обычно делаются private и у ним нет доступа. Для доступа дела.тся специальные public функции . и там она есть std::string isbn() const { return bookNo; } Соответственно в коде вызывать надо if(item.ismn() == item2.isbn()) {}
Ребята, подскажите, как сохранять указатели на объекты в массив? Цель, такова: я сохраняю в массив обезличенный указатель на дочерний объект, потом когда надо я делаю reinterpret_cast. Но можно ли как-то сохранять в массив не обезличенный указатель, а указатель типа родительского класса на объект (как-то так)? Объясняю на квадратиках и кружочках: https://pastebin.com/Viq1sx8Y
>>1259195 >int figures[10]; Ничего не понимаю. И это программисты? Тебе дали полиморфизм. Используй, используй полиморфизм. Нет, не хочу, хочу кастовать к инту. Это программисты? Мудачьё. Классов понаписали, к интам кастуют...
>>1259584 Память не обязана заполняться нулями, просто говорится системе что это свободная память, теперь там "мусор", и позже может записаться в этот участок другие данные
>>1259499 Говно без задач. Особенно если, б-же упаси, память для этой еблины выделяется динамически в рантайме. Тогда проще уж сразу на пхп костылировать.
>>1259673 >>1259749 Не совсем уж, платят норм, работа даже интересная. Но пока все обсуждают ФП, абстракции, серверлесс тд тп, ты пишешь парсер из 13бит пришедщих по пакету в флоут
>>1259584 Вот я могу сейчас ошибиться, но где-то было, что если ты хочешь удалить данные полностью - то смарт поинтеры тебе в помощь А так, получения, это undefined behaviour, просто тебе повезло, что под этому адресу осталось то же самое. Но я эту тему не полностью(лол) понял, так что это догадки.
Аноны, подскажите что делает этот код cout.self(ios_base::fixed, ios_base::floatfield) Я так понял он указывает тип данных как числа с плавающей точкой. В примерах эта строка идёт первой в основной функции, то есть всё введенные в функции значения будут с плавающей точкой, или как?
C++/Qt Есть код: QVariant ApplicantTableModel::data(const QModelIndex &idx, int role) const { if (!idx.isValid()) return QVariant(); if (idx.column() == 10 && role == Qt::DisplayRole) if(idx.data() == "0") return "-"; else return "+"; else return QSqlTableModel::data(idx,role); }
На idx.data() программа падает из-за переполнения стека. Объяснение этому следующее: >If idx is an index of the same ApplicantTableModel instance (which it should be, otherwise the usage is incorrect) idx.data() will call idx.model()->data(), i.e. the very same ApplicantTableModel::data() function we’re looking at => infinite recursion, which leads to stack overflow/crash. >А тут разве переполнения стека не будет? >Вызов idx.data() должен приводить к вызову ApplicantTableModel::data и т.д.
Вопрос - какого хуя, вызывая idx.data(), вызывается idx.model()->data()?
>>1260099 Байтоёбы обычно очень прижимистые, поэтому тебе кажется что "платят нормально". Сам посуди, если человек на работе экономит каждый байтик и инструкцию, то и в быту он будет экономным скупердяем.
>>1260256 >Вопрос - какого хуя, вызывая idx.data(), вызывается idx.model()->data()? потому что он именно это и должен сделать? дай определения всего этого и реализации
>>1244476 >стали кардинально другим языком Поорал. Спасибо большое, ты сделал мой день.
Кардинально::Блядь<другим>(это)->нахуй(языком) они стали? Ты че ебонутый?
Я это говно возненавидел когда мне было 14 лет, сейчас мне 23, и я не могу ни к одной строчке кода, которая написана на этой вонючей ссанине дауна Страуструпа, руки подпустить.
Куча дебилов пишут на этом говне. И что? Это показатель чего? Того что софт коммерческий пишется по принципу "написали и выкинули нахуй" ? Супер, продолжайте задвигать про аджайль девелопмент и прочие словечки, которыми сейчас так любят бросаться недоучки, которые не смогли образование получить нормальное. Удачи.
В файле treemodel.cpp у меня есть следующее: QVariant TreeModel::data(const QModelIndex &index, int role) const {
if (!index.isValid()) return QVariant(); if (role == Qt::BackgroundColorRole) { if (index.data().toString() == "Layouts") <=== Вот тут вылетает из-за переполнения стека. // return QVariant(QBrush(Qt::red)); }
Но не пойму, какого хуя, вызывая index.data() (как я считаю, это же QModelIndex::data() ), фактически же вызывается (как я понял) TreeModel::data(). И я попадаю в рекурсию с распидарашиванием стека...
>>1245807 Это так в клане поехавших недоучек вроде >>1245911 >поступают когда хотят сделать цикл до момента закрытия потока ввода по EOF. Сказочные долбоебы.
Аноны почему у меня в Билдере это: #include <iostream> #include <conio.h> #include <cstdlib> using namespace std; int main(int argc, char *argv[]) { int a = 100; a = a++; cout << a << endl; a = ++a; cout << a << endl; getch (); } В компиляторе выводит как : 101 102 А в компиляторе onlinegdb как : 100 101 ЧЁ ЗА ХУЙНЯ ?
Эта строка нарушает стандарт C++ и кидает ворнинг. По хорошему компилятор должен бы ошибкой считать.
Поэтому всегда работай с 4ыми варнингами и с воспринятием варнингов как ошибок. В крайнем случае отдельные варнинги в отдельных местах можно задизейблить.
Аноны, подскажите пожалуйста. Прочитал часть главы, и попрактиковавшись нихуя не понял. 1) Зачем нужен cin.get если есть функция cin.getline которая удобнее. Читает всю строку, с пробелами, удаляет символ новой строки и вообще заебись. 2) Используют ли еще символьные массивы для хранения строк, или string теперь более популярный? В книге второй описывают как более новый и удобный способ, единственное что побуквенно нельзя читать/записывать. То есть я могу использовать string если мне нужна именно целая строка, а про char в таком случае забыть?
>>1261104 Ебаться с байтами, уметь написать что-то простое под систему без фреймворков, адекватно квасить классы и зорко следить за памятью. И конкретно по цапле нужно знать шаблоны.
Плюсач, читаю Липмана. Глава про последовательные контейнеры, упр 9.22: С учетом того, что iv является вектором целых чисел, что не так со следующей программой? Как её можно исправить?
Полагаю, тут задумка в том, чтобы вставлять в начало вектора числа, пока начальный элемент исходного вектора не сдвинется до середины. Косяк в том, что в векторе при вставке итераторы становятся невалидными.
Решение вижу только методом вычисления количества вставок: https://ideone.com/9y1HXw Как то можно сделать это через итераторы, как это у них задумано?
Сап, двач. Уже год как работаю на одну замечательную ноунейм контору. Зарплата так себе и опыта особого не получаю. Думаю съёбывать.
Но хочу перед этим набить себе хороший аккаунт на гитхабе, для чего хочу покотрибутить в какой-нибудь open-source. Я знаю, что никто в здравом уме мои поделия смотреть не будет, однако если я скажу фразу "я контрибутил в X" - может сойдёт за плюсик на собесе.
Так вот, какой опенсоус посоветуете? Требования: 1) Чтобы пул реквесты не болтались по 10 дней 2) Лучше чтобы это был продукт, а не либа 3) Modern C++, в идеале сборка с 17 стандартом.
Ку. Поясните плиз за нишу применения C/C++ сейчас на рынке. Вроде бы и понятно, что языки позволяет писать что угодно, но если так посмотреть, самые бросающиеся векторы в ойти это: 1. Веб 2. Мобильные/десктоп приложения 3. Геймдев Вроде как из вышеперечисленного кресты актуальны по большей степени только в геймдеве и немного в десктопе(qt), типа если рассматривать какой-то конечный продукт/ПО/приложения на плюсах, то это опять тот же кроссплатформеная шляпа на кьюте или игры. Но ведь этого ничтожно мало, и при этом кресты все-таки дохуя популярны и сейчас, да и я постоянно слышу, что на них реально ебашат поистине интересные штуки, а не говно уровня круд и прочее околоайтишное дерьмецо. Вопрос - где же еще юзается C/C++? Что на них пишут? Приходят в голову всякие штуки по типу компьютерного зрения и разный софт для микроконтроллеров, то есть вещи, более близкие к железу. Еще интересно как в unix-системах байтоебля происходит. Что там делают? Пишут свои модули к линукс-ядрам? Просто я рил не понимаю. В общем, сумбурно получилось, поправьте/подскажите/поясните есичо, возможно в чем-то из вышесказанного заблуждаюсь.
>>1261339 Да заебали Вы со своей байтоеблей! Какие нахуй байты? Кто их ебет в линуксе? Никто там не долбет себе мозги в погоне за каждым байтиком сто лет как.
>>1261347 Нет там ебли с байтами. И больше нихуя нет для тебя. Закрой Visual Studio/VSCode/блокнот/Sublime, и иди пей пивас. Желательно с вонючей вяленой рыбой, которая воняет сложно женская пизда (которую не мыли неделю). Весь твой удел - простая жизнь, простое стояние в очередью за непонятно чем. А когда очередь закончится, ты скажешь что все виноваты кроме тебя, что ты проебал все свое время. Все твоя участь - в разработках - это быть создателем Hello World для очередной мега популярной мобильной платформы в очередном супермодном фреймворке. Единственное твое дитя, которое ты сможешь породить - личинус какой-нибудь жирной овушялке, которую ты обрюхатишь в пьяном состоянии. Так съеби же нахуй с /pr, займись более важными для твоего существование делами.
>>1261339 > где же еще юзается C/C++ Весь embedded. От роботов пылесосов и умных домов до самолетов. На микроконтроллерах обычно очень мало памяти, меньше сотни кб, вот например использующиеся для управления рулем многих немецких машин https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/v850/v850e2px/v850e2px4.html А если это критический узел, то там даже использовать динамическое выделение памяти нельзя, поэтому приходится скатываться в статический си. Но хотя бы ПО поддержки разработки всего этого на крестах.
>>1261536 Очень рад что ты нихуя интересного не создашь даже в перспективе. Сениоер блядь. Ты хоть в B+ дерево научился: поиску, добавлению, балансировке? Твоя отрасль - у вонючей параши говнопроектов уровня "банкомат".
>>1261432 >Renesas Контора которая проебала все кучу своих активов: целую архитектру SuperH. И знаете, почему этот анон этих петуханов сюда принес? >Мимо-сениор-C++-девелопер-из-топ-конторы GlobalLogic
Охуенная блядь контора. Петушня полная. Лучше просто не куда. Был блядь на одном их открытом дне - параша полная. Хуже дерьма в своей короткой жизни не видел. А Renesas слезно просят на остатки их денег сделать демо-хуйню на их чипах. Вот только никому оно нахуй не надо кроме поехавших долбоебов из Renesas. И двух даунов-тимлидов из GlobalLogic.
>>1261560 Скажите руководству, что нужно перестать заниматься этой хуйней откровенной. Renesas жить осталось не долго при все раскладах: ну год, ну может четыре. Займитесь уже нормальным делом, не надо пытаться угодить автобыдлу и всей этой параше. У вас есть нормальные проекты. Кончайте всю это хуйню на С++' и сранных микроконтроллерах, которые завтра они выкинут из-за ненадобности.
>>1261567 Ядро на С написано. Виртуализация требует знаний архитектуры исполнения, что-то я намека у С++-даунов на такое не заметил. Убейся, долбоеб. Или же описываешь кратко работу интеловской виртуализации (какие регистры, как страничная память работает в виртуальных машинах) или идешь нахуй.
>>1261601 >А что по направлениям для вката посоветуешь для джуна? Просто судя по hh даже в ДС кроме полутора десятка вакансий на qt ничего больше нет > Начни с qt, потом перекатишься внутри конторы или за её пределы на нормальное занятие. Так то с крестового джуна выхлопа чуть более чем нихуя, так что их берут очень неохотно на всякий кал типа инсталяторов, гуёв, тесты писать и прочее.
>>1261230 Судя по строке с инсертом, задумка вставлять не в начало, а после пройденного. Только он не инкрементируется нигде, так что с какого перепугу вайл завершится, неясно. Ну и с инвалидизацией ты уже сам заметил. Кажется, тут требовался не массив, а что-то вроде кучи с логарифмической вставкой. Но без формулировки задания это клуб телепатов. Задание в студию.
Аноны, поясните за ссылки. Вот в чистом си раньше были указатели и обычные переменные. Указатели по сути так же как и ссылки юзаются чтобы работать не с копией объекта, а с самим объектом. Вопрос нахуя добавили ссылки если уже были указатели? Избавится от -> и всегда юзать одинаковый синтаксис для работы с указателем на объект и с самим объектом?
ссылка, в отличии от указателя, не может быть неинициализированной; ссылка не может быть изменена после инициализации.
Отсюда и получаем плюсы и минусы использования того и другого:
ссылки лучше использовать когда нежелательно или не планируется изменение связи ссылка → объект; указатель лучше использовать, когда возможны следующие моменты в течении жизни ссылки: ссылка не указывает ни на какой объект; ссылка указаывает на разные объекты в течении своего времени жизни.
В среде простосиписателей есть секта пишущие на C90, в силу того, чтобы "обеспечивать максимальную портативность". Средипрограммистов на C++ такое с C++98 есть?
>>1262243 Не знаю про сишников, вроде там с С99 какие-то танцы есть, но все знакомые сиплюсплюсеры сидят минимум на 11 уже давно. У нас вся контора сидит на 2017.8 студии, активно юзаем 17 кресты.
С++98 это хороший знак, показывающий 2 вещи. 1. БЕГN оттуда 2. Начальство полные дебилы
>>1262243 В этом нет логики. По сути сишники сейчас это именно олдфаги, застрявшие на старой версии. Иначе бы они просто перешли на кресты. Си приходится больше страдать, но бенефитов ноль.
А C++ пацаны ждут новый стандарт и перекатываются как можно быстрее.
>>1262425 Странный ты. C++11 это дополнение поверх с++98/03. И если в бочку говна добавить ложку мёду, то всё равно говно получится (хотя тебе видимо понравилось и хочется добавки).
>>1262556 >Добавили слой меда, который можно есть, не докапываясь к говну снизу В том то и дело, что черпать говно тебе придется все равно, а сахар только делает говно более липким.
Правда что плюсы искусственно переусложнены, для того чтобы в него не вкатывались макаки, демпингуя оплату труда, а также чтобы корпорации зла не смогли переложить нелегкий труд погромиста на нейросети ИИ?
>>1262587 >Правда что плюсы искусственно переусложнены Нет, они сложные абсолютно естественно. Если проследить историю появления всех фич, то видно, что это нормальный эволюционный процесс.
>>1262243 >Средипрограммистов на C++ такое с C++98 есть? Нет. Некросишку поддерживают потому, что под некоторые платформы есть только сишный компилятор старого стандарта. В те года для небольшой команды написать компилятор сишки было вполне посильной задачей, поэтому и велосипедили. Для крестов это в принципе нереально, поэтому с самописным компилятором не ебутся, а пишут бекэнд для gcc/clang, и получают последний стандарт крестов автоматически.
>>1262662 А чего, когда появился clang, заливали, какой озуенно он крутой, потому что сначала код на ЯПВУ транслировался в язык LLVM, если gcc делает то же самое?
>>1262669 >если gcc делает то же самое? С GCC гораздо сложнее работать. Столлман специально все усложнил, чтобы копирасты не спиздили, в итоге сам себе хуже сделал.
>>1243187 (OP) >Напишите программу, проверяющую корректность предложений в сооветствии с правилами "английской грамматики" из раздела 6.4.1 (пик 1). Будем считать, что каждое предложение заканчивается точкой, окружённой пробельными символами. Например, фраза birds fly but the fish swim . является предложением, а фразы без точек или без пробела перед точкой — нет. Для каждого введённого предложения программа должна просто отвечать "Да" или "Нет". Указание: не возитесь с лексемами, просто считывайте данные в объект string с помощью оператора >>.
Для начала я решил написать проверку простого предложения, состоящего из артикля+существительного+глагола ИЛИ из существительного+глагола. Если бы предложения состояли только из артикля+существительного+глагола, а ввод без артикля считался ошибкой, то это было бы довольно просто.
Поэтому я поступил так: 1. Проверяю, является ли первое слово артиклем "the". 2. Если является, то всё хорошо и можно идти проверять дальше. 3. Но если не является, то стоит задуматься: а что если это не артикль? А если это существительное, после которого идёт глагол? Тогда надо проверить второе слово. И если это глагол, то это полноценное предложение, с которым можно работать дальше.
Написал https://pastebin.com/5CGxZvtF И здесь всё хорошо. Если ввести существительное и глагол, то программа ответит, что это нормальное предложение. Однако что-то идёт не так, и программа бесконечное количество раз повторяет какую-то функцию, вылетая через несколько секунд (пик 2). Что она такого делает? Начал вводить слова по одному и обнаружил, что программа проверяет слова срзау, не дожидаясь точки (пик 3).
Просто непонятно, почему сложность заданий так резко возросла. Раньше всё понимал и мог сделать всё, немного подумов. И вдруг >пук, и я ничего не понимаю без чужих решений, ничего не могу сделать. Это сильно бьёт по самооценке.
>>1262646 >Ты несёшь полный бред. Есть такое понятие, как сырой язык. Хорошая идея, но не доработано. Вот, доработали. И дорабатывают дальше. > Да языку уже давно чистка и рефакторинг нужен. Вместо этого "дорабатывальщики" лепят к нему каждые 3 года новый фасад показывая при этом чудеса анальной эквилибристики.
>>1262745 Во-первых, читать слова и в цикле, и в функции проверки это плохая идея.
Во-вторых, какого хуя у тебя заголовки окон такого же цвета, как у меня? Ты следишь за мной, сука?
В-третьих, нахер вообще вызывать sentence() в цикле? В сочетании с первым пунктом это скорее всего и приводит к проёбу. Рекомендую прочитать первое слово и сразу вызывать sentence(). А цикл выкинуть впизду.
У вас там контекстно-свободные грамматики не проходили ещё? Для этого случая есть алгоритм рекурсивного спуска. Чтобы его написать тебе даже не нужен мозг, тебе нужен только палец чтобы набирать текст. https://ideone.com/X26IdT
>>1262763 >У вас там контекстно-свободные грамматики не проходили ещё? Я впервые слышу такое словосочетание, так что видимо неть...
>В-третьих, нахер вообще вызывать sentence() в цикле? Так сделано у Страуструпа в этой же главе http://rgho.st/84XbBkTV6 И в циклах он тоже тоже что-то считывает, но у него всё это реально работает.
>>1262669 >А чего, когда появился clang, заливали, какой озуенно он крутой, потому что сначала код на ЯПВУ транслировался в язык LLVM Трансляцию ЯВУ в промежуточную форму делает фронтенд, и под LLVM его писать действительно удобнее. Бэкенд транслирует из внутреннего языка компилятора в бинарник. Их сложно писать для любого компилятора.
>>1262763 >У вас там контекстно-свободные грамматики не проходили ещё? У вас там С++-дегенератов генераторы GLR-анализаторов не проходили? Или под виндой не модно так делать?
>>1262800 Человек изучает плюсы по книге господина трупа. Там задача, которая легко решается рекурсивным спуском. Он узнает, что это такое, подумает, как реализовать, сделает это и пойдёт дальше xglrvalue ботать. А ты предлагаешь ему зачем-то окунуться в мир парсеров. Причём генерировать даже не LL-генератором, а сразу, мать его, GLR. Что?! Давай по чистому. У тебя в прошлом семестре был курс компиляторов и ты решил показать всем, какой ты умный?
>>1262810 Я так увлекся, что скопипастить себе решил в архив это.
Буду честен с тобой: ты - мудак, и пруфов здесь не будет. Благо, весь этот хуяч позволяет мне оставаться достаточно анонимным, в прочем мне настолько на тебя похуй что даже могу реальное имя свое сказать. Но не скажу, ты его позже немного узнаешь. Можешь приехать ко мне: я тебе в лицо лично скажу все что я написал, и мне плевать какого ты возраста.
С++ - ужасный язык от которой меня тошнит, и я пришел в этот тред чтобы от души высраться хорошим жидким поносом. Поносом с весьма зловонным запахом, подобным запаху изо рта старого маразматика Страуструпа.
Все книги и великие "авторы" литературы С++ чем-то похожи на тебя и на LL(1)-парсеры. Они пишут свои высеры со стратегией сверху-вниз: пытаются человеку который еще не понимает базовых концепций втереть кусок непонятного кода в качестве решения. Они также полагаются на одно единственное предположение когда начинают строчить свои охуенной ценности высеры. Почти все такие "охуенные" авторы никогда в своей жизни не написали ничего большего чем строго описанная задача уровня "говно переложить". Они ничего нового не придумали в целом. Переходя к следующей редукции эти придурки не удосуживаются объяснить по каким критериям было принято их решение, и этим, к слову, грешили много авторов в советской научной литературе. Но это еще и не самое страшное.
А страшное самое то что большая часть софта на С++ написана именно под винду. Систему программисты в которой изначально имеют травмированное восприятие реальности: склонны усложнять задачу. Склонны превращать простую программу в ебаный комбайн из кучи непонятного мусора. Вспомните Nero - он же написан на чудесном С++ был, вспомните его 10 версию на закате эры оптических дисков! Вспомните мрази! А теперь мрази вспомните k3b - программу которая в принципе нихуя не делал: она тупо собирала файлы и передавала список на growisofs, wodim и прочие утилиты, которые делали ОДНУ СУКА ПРЯМУЮ ЗАДАЧУ. И были написаны они и на С++, и на С. Но вот проблема количество абстракции в С++ коде близилось к нулю в этих утилитах.
Признаюсь, в этом случае я также погрешил предложив ему GLR и разобраться в парсерах самостоятельно пощупав как они себя будут вести, но сделал я это не просто так: объясню позже. Так вот да, подобные люди переписывают нахуй не нужный никому код, потому что не могут разобраться в более высоких концепциях: перейти от более низкого к высокому, к высокой теории, которая да проигрывает, но наталкивает на верный путь. Во все то говно, против которого и боролись ООП-борцуны в конце 80-х, так и прямо наступают С++ программисты: KISS и DRY, суки, KISS и DRY.
Так вот да, почти все С++ проекты размером больше чем то что я привел, выбрасываются на помойку после нескольких лет разработки, и переписываются с нуля. Из-за того что когда количество говна в системе классов становится запредельным - проще начать все с нуля. Ничего не напоминает? Именно потому я не люблю С++ и все то дерьмо, которое рождают люди вроде тебя. И пусть мои слова лягут на твою душу бальзамом. Проблема твоя в том что ты настолько глуп и уперт, что не можешь освоить что-то новое. И дело здесь не только в хуевизне С++, но и в целом в плохой применимости ООП к проектам отличным от академического говна. У меня был пример на С# и Microsoft.NET, моим наставником тогда был охрененный специалист, и со временем - мы всеравно погрузли в говне как и все до нас. Вот оно как. Ну и да, то что С++ ужасен когда дело касается больших проектов, только подливает масло в огонь. Не верите - взгляните на Monotone, на Google Chromium и его время компиляции, пожирание памяти и тормоза. Все эти проекты написаны на крутейшем языке С++. На то как Mozilla заебались с С++ и начали перепиливать Firefox на язык который они сами сделали, чтобы не видеть весь этот ужас.
И последнее - компиляторы я никогда не писал, хотя может быть и что-то напишу. У меня другие задачи, эквивалентны по интересности, и тебе постигнуть их не дано в силу приобретенной глупости: ты слишком много кушал мэйнстрима, детка. Честно сказать, и не было у меня информатики в университете, прости такие люди как ты заняли все бюджетные места, и я решил что мне места там нет, если туда такое рвение у всех каловых масс. Учить принудительно x86 реального режима в 2013-м году я также не хотел особо. С тех пор меня бесят почти все программисты уровнем ниже тех, кто сидит в LKML или пилит GCC. Не может быть хорошим то, куда идут массы. И я в этом убедился. прямо здесь, читая говно которое изливаешь ты в нерабочее время на говнофоруме.
Учитесь и развивайтесь, учитесь приводить правильные доводы во внутреннем монологе с собой. И тогда вы быстро начнете понимать что говно в обертке, а что настоящий инструмент. Удачи!
Вот также пример ПРАВИЛЬНЫХ ХОРОШИХ НЕКРАСНОГЛАЗЫХ программ которые написаны на ПРАВИЛЬНЫХ ООП языках, и казалось бы - все должно быть хорошо. Они исполняются на в вашем понимании правильной "некрасноглазых" платформе Windows ну или JRE ^_^
- AutoCAD. Правильный Microsoft.NET, отличный ООП. Лучшие в мире пожирания памяти, крутейшие вылеты с ошибками при работе над большим проектом. - Matlab. 10 гб со всеми его "тулбоксами". Комментарии здесь излишни. Начали "за здравие", закончили "за упокой". - Adobe After Effects и почти весь дизайнерский кал от Adobe - вылетает направо и налево при нажатии не той кнопки или малейших ошибок со стороны ОС. Разработчики не поняли что исключения в ВЫСОКИХ языках МОЖНО обрабатывать (НИХУЯ СЕБЕ ПОДРОБНОСТЬ). Размеры этого кала также радуют. - Adobe Flash - этот ужас, слава Господу, уже почти эрадицировали с просторов всемирной паутины. Куча конфузий типов в С++ (да-да, дорогие мои) - в этом треде вы такое даже не обсуждали, и много других штучек, которые позволяли долгое время нагибать целые компании при помощи страничек с веселой анимацией в правильном браузере Internet Explorer.
>>1262854 Честно, я вручную управляю памятью только когда использую сишные библиотеки (которые свои аллокаторы предоставляют). В 90% своего же кода мне вполне хватает unique_ptr.
>>1262763 Это работает, но я уверен, что оно не должно так работать. 1 - пишет "true" только если находит слово "the", даже если оно идёт после точки. 2 - несколько "the" подряд по идее должны вызывать "false". 3 - пишет "true" только если вбить несколько предложений. На одно предложение почему-то не реагирует.
>>1243187 (OP) Привет аноны. На связи кун 19 лет. Учу c# из-за unity и для запасного плана, если придется вкатываться во что-то серьезное учу c++. Первое время охреневал от синтаксиса c++ и как он разница с с#, но со временем свыкся ибо похожи, как по мне.
Скоро окончу шарагу и пойду учится на информационную инженерию из-за того что нравятся реализовать идеи или мысли в "реальные" объекты, сущности, почти чувствовать себя богом. Из-за этого начал изучать unity, а потом и c++.
Хотел спросить: Стоит ли выкатываться из уютного c# в жестокий с++.
Даст ли мне высшее образование то что я не смогу получить, выучить?
И стоит с моими фантазиями выбрать именно этот факультет.
Ещё хотел спросить зачем писать std::cout если можно объявить namespace std? Это просто как один из примеров.
И хотел спросить где я обосрался и как скоро мои фантазии о программировании превратятся в крах. И какое будущее ждет с++ и может с#
Хотелось бы ещё получить пару советов для начинающего.
Аноны, можете подсказать когда нужно в указателе писать * перед названием? При инициализации ясен хуй, но вот я создал динамический массив, и при заполнение arr.name звезду уже писать не нужно, почему так?
>>1263703 >Стоит ли выкатываться из уютного c# в жестокий с++. Нет
>Даст ли мне высшее образование то что я не смогу получить, выучить? Если пойдешь да компьютерную специальность - нет, не даст.
>И стоит с моими фантазиями выбрать именно этот факультет. Да.
>зачем писать std::cout если можно объявить namespace std? Затем, что в C++ не поощряется подключать то, что тебе не нужно. Если ты используешь cin, cout, да endl, то подключать всё пространство std - моветон (хотя для новичка допустимо).
>И какое будущее ждет с++ и может с# C# - не такой высокий порог вхождения, большая конкуренция, галеры, требуется владеть довольно большим стеком технологий
С++ - довольно высокий порог вхождения, часто требуется соответствующая математическая база, туева хуча возможностей выстрелить себе в ногу, мало вакансий, зарплата выше.
>>1263804 Сейчас уже голова не работает что-то в пример привести, студию закрыл. А там понял что хуйню написал, забыл сказать что я структуру использовал. Вопрос был в том, почему при записи в отдельный элемент динамического структурного массива не нужно писать звёздочку перед элементом.
>>1263801 Шкурный вопрос. Вакансии по крестам обычно на мидлов и сеньйоров, джуна вообще не видел. Есть ли июню смысл переобучится побыряку на какую-то пыху или чистое си или яваскрипты, чтобы наработать опыт, а потом переобучиться обратно на кресты?
Может кто обьяснить как работает остача от деления? Ну то есть 7/5 остача будет 2, это понятно, в семерке одна целая пятёрка. Но почему 3 % 5 выдает 3 блять.
Указатели на функции часто используются? Читаю главу и мало что понимаю, при этом написано что это всё рассказывается поверхностно. Нужно это задротить сейчас или это редкоиспользуемая хуйня и со временем придет понимание?
Подскажите почему ошибка возникает? Я так понял компилятор ругается на то, что он не может выбрать функцию для перегрузки. Так она же блять одна. Как пофиксить проблему?
cpp.sh/2lyfj Подскажите почему не работает. Должен ведь по диагонали обменять значения. Если убрать присваивание ar[rows][cells] = temp то значения меняет. Оно по идее свапает всё обратно, но я не пойму почему.
>>1243875 Аттрибуты - это то, что раньше делалось прагмами. В идеале, оно тебе не должно быть нужно вообще, но когда ты начнёшь хуячить в продакшн, то какую-нибудь проблему ты сможешь решить с помощью аттрибутов. https://en.cppreference.com/w/cpp/language/attributes
Ответы на все вопросы: http://eel.is/c++draft/
http://eel.is/c++draft/, пропущенный через кишечник макак: https://en.cppreference.com/w/cpp