"C++ is a general purpose programming language designed to make programming more enjoyable for the serious programmer." B.StroustrupВместо шапки - https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Я тут пью пиво и придумал тест на синьора помидора:надо посмотреть на строку ниже 10 секунд и объяснить, что она делает.auto _=<::>(auto&_)<%_%=_;%>;ЗЫ для компиляции достаточно 14 стандарта.
>>1413616>>1413622Делает меня ругаться. Сейчас бы спрашивать говно всякое типа альтернативного синтаксиса на собесах. Вам на работу важнее кого взять: инженера, который задачу решить может, или фокусника, который на крестах умеет кодить без [], {} на клавиатуре?
>>1413616Иди на хуй, ретард-фокусник. Не устаю удивляться тому, как эпоху хакеров-вирусописателей, ковыряющих ядро винды, сменило поколение ибонатов-синтаксических дрочеров. Так-то для большинства задач хватит PureBasic с ассемблерными вставками и годным оптимизирующим конпелятором. Как максимум - сишка. Все остальное - выбросы современного общества с изобилием хуйни для говноедов всех мастей.
>>1413616>тест на синьора помидораMerge request denied. Reason: "Пиши код без изъёбств. Третий раз за неделю пытаешься что-то в таком духе написать, ну нахуй уже."
>>1413672Синтаксические обезьяны же. Уебки не знают, как виртуальный адрес транслируется в физические или что уровень привилегий это не что-то в процессоре, а свойство сегмента, но выебываются друг перед другом синтаксическими извращениями, ебучими liftM, темплейтным говном, тайпклассами (типичный любитель тайпклассов на работе осваивает новый логгер для записи в базу) и прочим. Как меня баттхертит с современной индустрии, пиздец.
>>1413674>Уебки не знают, как виртуальный адрес транслируется в физическиеДа ладно, не настолько же всё плохо.
Аноны, посоветуйте годный туториал по Makefile. Пока единственное что нашел из годного - это https://www.tutorialspoint.com/makefile/
Сейчас приложение перемещает круг при нажатии на мышку (на её же позицию). Как сделать так, чтобы оно не просто меняло локацию одного PictureBox, а создавало новый, оставляя старую точку на месте?
>>1413726Блядь. А сам подумать не можешь? На нажатие мыши у тебя скорее всего стоит перерисовка и рисовальщик знать не знает про твой первый круг. Поэтому храни его где-то и рисовальщику скажи, что его нужно рисовать.
>>1413742Я же код рядом оставил. Сейчас там просто стоит Show скрытого до этого элемента, на месте нажатия мышкой. Как хранить и как рисовать заново я не знаю, где-то есть какое-то гайды по этому поводу?
>>1413564 (OP)C++ умрёт? У него же нет ниши, ембедед на си, бизнес на джаве, десктоп си шарп, в остальных местах раст и го в спину дышат.
>>1413747В нише кодинга втупую кресты останутся только для легаси. В рокет саенс (не эмбед байтоебля, а computer vision, HFT или low-latency, графические движки, обработка звука/видео) может немного уступить Rust, но в целом будет цвести.
>>1413814Возможно. Если хочешь быть высокоплачиваемым и востребованным в C++, стоит в первую очередь учить математику и алгоритмы. Если по жизни интересует только кодинг (хотя ты еще не знаешь), стоит вкатываться в что-нибудь помоднее типа котлина.
>>1413687https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.htmlhttp://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/https://danyspin97.org/blog/makefiles-best-practices/
>>1413841С математикой дружу. Да и доставляет с алгоритмами дрочиться. Вернее доставляет результат. Спасибо. Надо будет обдумать.
>>1413811Не он, а я. Но я согласен с этим байтоебом. Алсо, нахуй кьюти, каллбэки им не нравятся, ахуеть теперь. Только неосилятор не может в каллбеки с 17 стандартом.
Такая проблема. Пытаюсь читать stdout и stderr другого процесса используя безымянные пайпы. Этот процесс создаю из своего приложения через CreateProcess. stdout получается читать, а вот stderr - нет. Все сделал как в примере https://docs.microsoft.com/en-us/windows/desktop/ProcThread/creating-a-child-process-with-redirected-input-and-output , но stderr не читается. Кто-нибудь сталкивался с таким?
>>1413845Машина нужна только чтобы запускать браузер. Ты занимаешься разработкой ОС и браузерных движков? Вряд ли.
>>1413905Скриншот рабочего стола сделай. Уверен что там только 1-2 браузера и тонны всего остального. Какая блять веб-эпоха, дебил? Она в нулевых еще закончилась.
>>1413862>Только неосилятор не может в каллбеки с 17 стандартом. Что там особенного в 17 стандарте для колбеков, чего нет в 11?
>>1413674>Уебки не знают, как виртуальный адрес транслируется в физические Рассказывай, послушаем тебя.
>>1413663>как эпоху хакеров-вирусописателей, ковыряющих ядро винды, сменило поколение ибонатов-синтаксических дрочеров"я продолжаю утверждать, что семантика языка важнее его синтаксиса"страуструп
>>1413663>Не устаю удивляться тому, как эпоху хакеров-вирусописателей, ковыряющих ядро винды, сменило поколение ибонатов-синтаксических дрочеров.чувак, сегодня черного софта, работающего на нулевом уровне (как инфраструктурные вещи, так и боевую нагрузку), пишут не меньше чем тогда, просто этот "бизнес" сильно посерьезнел - по сути, это уже кибер-оружие как бы ни пафосно звучало, пишется это спецслужбами государств либо своими силами либо частным подрядом у провереных фирм и лиц; те же кто этим занимаются, щас молчат в тряпочку, ибо светит просто снос башки за треп"коммерческий" же блек софт, те тупо воровство у населения, лол, переместился в юзерспейс, ибо все что нужно спиздить с компа можно просто спиздить боевой нагрузкой, работающей в юзерспейсе с правами хомячка же, болеее того он пеместился еще выше, на уровень скриптовых расширений в тех же браузерах, ворде и офиса в целом, pdf-документов и прочегои да, тк все это коммерциализировалось, то никто не спешит писать статьи и вообще хвастаться всем этим в интернетахвот и кажется что нет движухи
>"коммерческий" же блек софт, те тупо воровство у населения, лол, переместился в юзерспейс, ибо все что нужно спиздить с компа можно просто спиздить боевой нагрузкой, работающей в юзерспейсе с правами хомячка же, болеее того он пеместился еще выше, на уровень скриптовых расширений в тех же браузерахВот, я знаю что я буду копать если не вкачусь в фронт, с детства мечтал стать хакером (:
А ну ка, пидорасы, вот вам тест на быдлокодера. Есть тупой спинлок ("мьютекс"). Впишите в код вместо ... порядок: acq_rel, acquire, release или relaxed. Вписанный порядок должен работать на всех архитектурах и быть максимально слабыми. Ответ без объяснения не принимается.atomic<bool> locked {false};lock() {while (locked.exchange(true, ...));}unlock() {locked.store(false, ...);}
>>1413687>Пока единственное что нашел из годного - это https://www.tutorialspoint.com/makefile/Что там годного?Устаревший синтаксис записи правил (которые и так неявно определены), закат солнца вручную (прописывание зависимостей от хедеров, вместо автогенерации зависимостей) и т.д.
>>1413846>https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.html> http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/Туториалы про "как закатывать солнце вручную."
>>1414317При локе: acquire при удачном CAS, relaxed при неудачном.При анлоке: release.Объяснение: acquire-release поведения требует стандарт. Почему relaxed — очевидно.
>>1414431Это не кас, ну да ладно, правильно. Вот только почему exchange можно делать с acquire а не acq_rel -- вообще ни разу не очевидно. Жду указания на нужный абзац стандарта, который говорит, что таки можно.
>>1414388Поведай, чем же кас будет лучше чем эксчендж вот конкретно здесь. Про ещё один цикл с лоадом внутри для ублажения кэшей знаю, для простоты опустил.
>>1414431>>1414528Уточню, почему при твоей расстановке порядков будет выполняться взаимное исключение?
>>1414528>Вот только почему exchange можно делать с acquire а не acq_rel -- вообще ни разу не очевидно.Вообще ни разу не очевидно почему надо начинать с acq_rel и доказывать, что одного acquire достаточно.>>1414532>Уточню, почему при твоей расстановке порядков будет выполняться взаимное исключение? Не понимаю, что ты хочешь услышать.То, что успешные RMW-операции всегда читают последнее значение (в смысле modification order) атомарного объекта?
>>1414534>То, что успешные RMW-операции всегда читают последнее значение (в смысле modification order) атомарного объекта?Да, именно это. Для меня до сих пор загадка, почему оно сделано так.
Здравствуйте. Подскажите как мне вывести большой объем текста. Типаcout << "В лесу родилась ёлочка...14 строк...В лесу она росла"?
>>1414591То есть если я скопирую текст из Википедии мне его нужно где то в блокноте собрать в одну строку и потом в коде разделять через /n?
>>1414602Скопируй в текстовый файл, потом из файла через поток fstream можно построчно в цикле выводить getline'ом.
>>1414585const char* s1 = R"(В лесу родилась ёлочка...14 строк...В лесу она росла)";и выводишь как обычно.
>>1414901Рекомендую самоучитель по C++ от Джеффа Кента, там все очень разжевано хорошо, даже я понял(вроде).У тебя была какая-то переменная х, ты ее передал в функцию. По умолчанию копируется просто значение, а само значение х не изменится после манипуляций над ним в функции. Когда по ссылке (&) передаешь, то соответственно значение поменяется при манипуляциях внутри функции.Ты обычно будешь пользоваться оператором return все равно, не зацикливайся пока, потом вернешься и разберешься получше.
>>1414920Я не понимаю, какие еще могут быть вопросы. Вот по значению передача, по ссылке добавь амперсанд в прототип и заголовок функции.
>>1414940Да, но вряд ли для того, что ты подразумеваешь.Он быстро распарсевает хуево сделанные (некорректные отступы в основном) мегабайтные конфиг файлы на ксамеэле, за секунды, где нотепад++ будет пару минут скрежетать.Для собственно кодинга не использую.
>>1414944Именно для этого. Вроде если допилить плагинами должно быть сносно. Нужно перекатиться из ламповой студии в кроссплатформу без моральных потерь.
>>1414928Нихрена не понял. Вот у меня указатель xУ него значение 100Указатель указывает на ячейку в памяти, которая хранит значение 100.ДалееСоздаётся переменная var со значением 20myFunc(x) => myFunc(&var)И как понять эту хуйню? Что сейчас произошло? Теперь функция выглядит какmyFunc(&var) - это выводит 20Или myFunc(var) - это выводит что? Номер ячейки?Или muFunc(&var) - это выводит что?
Есть тут анон, который прямо сейчас за денежное вознаграждение поможет написать код для нескольких лаб несложных? Пишите в телегу @seregalopata
>>1414964Ну и ты сначала прототипировал функцию от указателя.Потом вызвал функцию прочитав var. И получил 20. Может все таки питон?
>>1414970Код в прикрепленной пикче выводит 100. Я не понимаю последовательность махинаций этого кода как это пришло к выводу 100.
>>1414972Анонас не понимает указатели, не понимает что такое память на низком уровне и как она работает. Я ему предложил питон, он не хочет.
>>1414971Я читал Герберта Шилдта "C++ шаг за шагом". Попробуй почитать. Все детально разжевано и простым языком. про указатели на 164 странице
>>1414974Теперь я ближе к пониманию, наверное. "х" указывает на номер ячейки , где лежит значение 100.Я адрес значения var кладу в номер ячейки? То есть я номер ячейки (например 315) переименовал на адрес переменной (например f594g7) и теперь у меня в ячейке f594g7 лежит 100. По этому когда я пишу cout var он выводит мне значение из ячейки f594g7 то есть 100.Так это работает?
>>1414901На самом деле способ передачи всегда один.Параметр в теле функции - это всегда копия аргумента, который передан в функцию.Если параметр имеет ссылочный тип (указатель или ссылка), то в теле функции у тебя будет копия этого указателя/ссылки со всеми вытекающими.
Херня написана на твоей картинке. Никакого выбора одного из двух способов передачи у тебя нет.Аргументы всегда передаются одним способом - копированием.Различие есть в том, что из себя представляет параметр функции (ссылочный или не), а не как он был передан.
>>1414993>Существует ... при ее вызовеЭто поведение задается не при вызове функции, а при ее объявлении.
>>1414950Можешь еще обратить внимание на sublime. VSCode по функционалу намного ближе к легковесным текстовым редакторам вот только он нихуя не легковесный, чем к IDE.
Не могу разобраться с code-style. Тема тянет на холивар, но все же.lower_case или camelСase? Венгерская нотация все? Или еще актуально? Как определиться со стилем написания кода и какой более правильный?
>>1414964>>1414901Функция f не изменяет переменную, g - изменяет. Кстати, в отличии от f, ты можешь передать в g только переменную типа int.
>>1415435Написать другую функцию с таким же именем, но другим типом аргумент это называется перегрузка функцииvoid f( float x );void f( bool x );И так далее
У строк есть префикс u8, который делает std::string с кодировкой utf8. Есть ли портативный способ вывести это дело на консоль, шобы работало на винде и на линухе? Без плясок с локалью и без смс. Вроде в виндовсе консоль по умолчанию использует utf16, поменял на utf8, шрифт поменял, пока не помогло.И вообще, какой лучше на сегодняшний день, в c++17, способ хранить строки в human-readable формате, с поддержкой максимально большого числа символов?
>>1413747Не умрет. Кроме того, язык активно развивается во всех направлениях, то есть укрепляет свои позиции. Раст никогда не догонит кресты, к сожалению.
>>1413750Ну ты и тупой дегенерат, пиздец. Что, сложно когда нельзя просто спиздить код у другого человека? Пиздуй в справку, мразь.
>>1415498Мне просто нужно показать как это делается, я не знаю как создать множество объектов во время выполнения, а умею только изменять уже готовые.
>>1415512PictureBox^ pic = gcnew PictureBox или типа того что-тоДальше добавляешь pic в какой-нибудь массив
Я тут подумал. А зачем мне ебаться с Qt, если можно приколхозить тупа C# формочки склепанные абы как за 10 минут и все будет выглядеть красиво? Зачем вообще фронтенд делать нативным?
Аноны, как можно посмотреть в определенной папке какие файлы там лежат и отобрать, скажем, только файлы с заданным расширением? Есть чо в крестах для этого, желательно без сторонних библиотек?Умею только fstream.
Читаю страуспопа и нихуя непонятно какие-то токены, лексемы, термы все в кучу навалено с обращением к пендоской грамматике причем сразу. Есть нормальная книга где последовательно и нормально поясняют?
В книжке C++ Templates: The Complete Guide, в одной из последних глав, про Variant, есть пример:template<typename... Types>class Variant : private VariantStorage<Types...>, private VariantChoice<Types, Types...>...{... using VariantChoice<Types, Types...>::VariantChoice...;...}Так вот это выражение с using не компилится. Я так понял, тут мы просто объявляем конструкторы всех базовых классов VariantChoice в Variant, раскрывая Types. Однако, компилятор пишет "Types: пакет параметров должен раскрываться в этом контексте". Памагите, пожалуйста, я запутался.
>>1415792>Так вот это выражение с usingЕто не выражение.>не компилитсяC++17 не завезли в компилятор. Или оно не включено.
>>1415812>C++17 не завезли в компиляторНе правда, у меня включен c++17. Точно помню, что подключал его, когда не компилились fold expressions. Даже перепроверял перед тем, как постить в тред. Так что дело точно не в этом.
>>1415834Видимо, это баг MS-компилятора. С `VariantChoice<Types, Types...>...` в списке базовых классов у него проблем нет, кстати.GCC и Clang нормально переносят такой using.
>>1415836> С `VariantChoice<Types, Types...>...` в списке базовых классов у него проблем нет, кстати.Да, здесь глухо, ни ошибок, ни предупреждений.> GCC и Clang нормально переносят такой using.Что ж, спасибо, сам бы попробовал на gcc, но у меня тут, блджад, сочетание отдыха с древним ноутом с виндой и изучением шаблонов.
>>1415834Полноценная поддержка 17 стандарта у msvc появилась только в версии 19.15. Пруф: https://en.cppreference.com/w/cpp/compiler_supportТак что выкидывай нахуй свое устаревшее говно.
>>1415847Спасибо, можно и это заюзать иногда.>>1415853И тебе спасибо, выкину при первой же возможности.
>>1415853>Полноценная поддержка 17 стандарта у msvc появилась только в версии 19.15. ПруфПруф не стоит выеденного яйца.Код с pack expansion в using-declaration не компилится даже в 19.20 https://godbolt.org/z/XMAy0d
Объясните все-таки, что такое полиморфизм, а то какая-то путаница вокруг этого определения.Как я понимаю - это когда виртуальные функции переопределяются в производных классах. Но где-то видел что это дескать просто "наследование", а полиморфизм это когда конкретно абстрактные классы и чисто виртуальные функции.
>>1415919> Объясните все-таки, что такое полиморфизмКороче, когда один тип "мимикрирует" под другого.Например, базовый класс "Сущность" игровая какая-нибудь, у них есть функции Update, Draw и тд.В наследниках ты пишешь свои определения этих функций и в итоге всё работает единообразно.
>>1415919полиморфизм в с++ - это очень просто, в отличие от других языков, всего 3 разновидности:есть зашитый в язык динамический полиморфизм через виртуальные функции классовесть статический полиморфизм через шаблоныесть так называемый ad hoc полиморфизм (не путать с функциональщиками, они в этот термин другое вкладывают) в виде перегрузки функций и функций-членоввсе просто
>>1415919https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)Не благодари.
>>1415943Не благодарю, я читал это, нихуя не понял. Меня интересует определение в контексте ООП под с++.>>1415928Ну то есть обычно динамический полиморфизм подразумевают, так?
>>1415955> Наследование в С++ реализуется набором ad-hoc-механизмов, однако, его использование называется в сообществе языка «полиморфизмом» (а сокрытие полей — «абстракцией»)Ну теперь я вообще запутался.Сокрытие полей это же ведь инкапсуляция? А ad-hoc в C++ вон выше анон тоже писал, что это перегрузка функций.
>>1415960>Наследование в С++ реализуется набором ad-hoc-механизмовя ж говорю, термин ad-hoc в различном контексте имеет отличающиеся коннотациив данном случае имеется ввиду что ты в крестах явно задаешь связи наследования между классами, выстраивая тем самым иерархию классов, в других же языках механизм наследования может быть по другому сделан
>>1413564 (OP)>>1008826 (OP)Здравия, изучаю C++ несколько лет, но с большими перерывами, вот недавно опять начал, для того чтобы освежить знания прошел на edx курсы: Introduction to C++, Intermediate C++ и Advanced C++. Вопрос в том что делать дальше? Понятно что можно(и наверное так и нужно бы сделать) начать изучать stl. НО! Скорее всего мне опять не хватит мотивации это сделать, потому что я не знаю где это все применять. Аноны, покидайте области в которых применяется С++ и ресурсы или книги с помощью которых их можно начать изучать. То есть мне кажется моя проблема в том что я не знаю где в принципе применяется программирование, поэтому нет мотивации, так как не знаю куда развиваться. P.S ХЗ куда писать этот вопрос, если написал не туда подскажите куда лучше его написать.
>>1416405Забыл добавить. Сейчас у меня есть идея начать изучать математику и реализовывать штуки оттуда на плюсах. Еще можно физику наверное ХЗ.
>>1416198Да, как уже написали разберись что такое присваивание, а что такое инициализация. Если ты именно про присваивание то 2 и 3 вариант не работают. Если про инициализация то, насколько я знаю, предпочтителен последний вариант, так как он исключает неявное привидение типов, что исключает неявные ошибки.
>>1416409>>1416238Да, я немного обосрался. Сначала хотел написать инициализация, но потом почему-то передумал
>>1416462Если бы. Мне как-то на собеседовании на ждуна(наверное) подсовывали вопросы прям с cppquiz. Это вообще нормально?
>>1416522нормальноно щас делают проще: кидают тебе тест на литкоде, ты его прорешиваешьдальше уже разговаривают по результатамимхо, вполне годный способ
>>1416405>...не знаю где это все применять>начать изучать математикуНе еш, подумой.Для математика самое зашкварное - это задаваться вопросами в стиле "а где это в жизни пригодится?". Это противоречит самым основам математики.Судя по твоим вопросам, тебе лучше начать с научно-популярных книжек.
>>1416411А ты сам себя к кому причисляешь?Прост забавно как-то, если ты очуччаешь себя выше джуна или студента, но при этом не в состоянии самостоятельно сформулировать, чем ты круче их.
>>1416522>cppquizСпасибо за наводку. Только я что-то не понял тут подвоха у этого вопроса "повышенной сложности". Без задний мысли сначала ответил ошибка компилятора, что у него int main() ничего не возвращает(хотя это ок оказывается, всегда так было?), потом ответил "1" ну как если бы я вообще первый день читал о С++ и прокатило.Что за триграф вообще, это какая-то управляющая последовательность?
Вот тоже интересно, я как-то сталкивался, что у меня не работала какая-то манипуляция с char массивом через указатель, но заработала через обращение с []. В чем все-таки разница между массивом и указателем?
>>1416673Нет, 3 затем 4. Потому что постфиксный вариант инкремента. Сначала в функцию отправляется 3 затем i увеличивается на 1. Как вообще может получится 4, 3?? Даже при ++i будет 4 4.
>>1416683Надеюсь такую хуйню на собесах не спрашивают. Зачем мне вообще это нужно в голове держать? У меня есть иде и дебаггер. Только не говорите, что на собеседованиях заставляют еще на листочке что-то писать без подсказок.
>>1416703Это чё троллинг тупостью? Ты боишься что тебя завалят на собеседке инфой со второй главы любого учебника по си/сипп? Если захотят тебе задать задать сложный вопрос по фишкам языка то спросят чё посложнее чем хуйню с пика. Но судя по тому что ты откуда-то аутпут 4 3 надумал, тебе ещё рано на собеседки.
>>1416697Да я это знаю, просто char массив хранится по-моему по разному в памяти, там как символьная константа если, он не модифицируется при передаче в функцию.У меня было что-то вродеchar a="hello";foo(a);функция что-то делала с массивом, меняла регистр по-моемуИ был access violation.А вот когда char[6]="hello";Все работало.Ну и ответ примера, typeid(int)==typeid(int[]) возвращает ложь в ответе, это не совсем одно и то же.
>>1416794Одинаково они хранятся. char *a = "hello"; - это указатель на символьную константу и попытка ее изменения - UB. А char a[6] "hello"; - это массив с копией символьной константы и его ты можешь менять сколько хочешь.
>>1416802Ну я же говорю, не одинаково же. В описании к тому вопросу на ccpquiz написано, что массив преобразуется к указателю все равно для компилятора.UB потому что размер не задан четко в случае *a?
>>1416725>>1416706Это вы толстите видимо. Такие вопросы задавать, это тоже самое если тебя сейчас спросить какую-нибудь хитровыебанную хуйню из программы матана 6 класса, которой вы посветили пару уроков. Ответишь правильно? Сомневаюсь. Такие вопросы никак не отражают действительности о знании предмета. Из таких контор надо бежать.
>>1416867> программы матана 6 классаЭто где в 6-м классе проходят матанализ?> Такие вопросы никак не отражают действительности о знании предмета.Да. Такие вопросы проверяют элементарную вменяемость.Если ты проваливаешь такой тест, то о знании предмета спрашивать смысла нет.
>>1416699> заставляют еще на листочке что-то писать без подсказокКонечно, а потом обмазываются своими инструментами для программированию и рассказываю как всё охуенно.
>>1416867Ты, кажется, не понимаешь, что это - основы и эти основы надо знать. Скажи ещё, лол, что "зачем мне уметь считать, есть же калькулятор".А вообще, с там подходом, пиздуй-ка ты во фронтенд.
Почаны, не бейте, лучше обоссыте.Поясните, плиз, за file system в с++. create_directories, если ему передать путь типа "\1\4\8\8", создает папки в корне (например "С:\1\4\8\8"). Если создать файл ofstream'ом, передав open'у неполный путь, файл будет в папке проекта. Почему fs remove, которому передали неполный путь, находит то, что создавалось ofstream'ом? Я не понимаю, почему у меня работает то, что работать не должно.
>>1416874>>1416881>>1416905Какие же вы унылые задроты, просто пиздец. Какая нахуй вменяемость? Это задание само по себе неадекватное. Покромил тролей.
>>1416909в js треде тебя сначала выебут, а потом обоссуту крестопетухов сначала обоссут, потом - выебут
>>1416909Потому что так работают системные вызовы в операционной системе - если ты передал неполный путь, то путь будет считаться относительно текущей директории приложения. Текущую директорию можно поменять через chdir/std::filesystem::current_path
Поменял название папки, в которой лежит проект. Везде, где мог поменял название, но не могу избавиться от ошибки "QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly" и еще дюжины из нее вытекающих. Где лежит конфигурационный файл этой залупы?
>>1416936Текущая директория — это понятно. Непонятно вот что:Проверяю current_path — все как ожидалось, путь до папки с исходниками проекта.fs::create_directories(неполный_путь) создает папки в C:\fs::remove_all(первая_папка_неполного_пути) находит их там и удаляет.Через ofstream создаю файл, передав open(), опять же, неполный путь.Файл лежит в рядом с исходниками.fs::remove(неполный_путь_к_файлу) находит его и там и удаляет.
>>1416952Нет. Проект лежит в папке пользователя. Полтзователь на русском. Из-за этого возникала другая ошибка. Переименовал на английский. Теперь вот что
>>1416958Странно, кстати - обещают, что create_directory вызывает mkdir, а тот должен нормально работать с относительными путями.Ты чем компилишь? Может, это играет роль.Но я не уверен, поскольку я везде в своем проекте при использовании filesystem писал через current_path, т.е. абсолютными путями пользовался, можешь делать так же - только храни путь не в string, а в path, чтобы правильно слеши разруливались.
>>1416961>>1416963Я юзаю VS на винде.>писал через current_path, т.е. абсолютными путями пользовался, можешь делать так же - только храни путь не в string, а в path, чтобы правильно слеши разруливалисьТак и сделаю, потому что странно все это.>>1416971да, это говно, я же сельдь
>>1416977Блядь, не тот 2 скринЕсли убрать акробатику вокруг current_path и передавать просто стринг с относительным путем, то пишет в C:\
>>1416958>fs::create_directories(неполный_путь) создает папки в C:\"\1\4\8\8" это полный путь, т.к. начинается с root directory.
>>1416980И да, у filesystem::path есть метод exists, чтобы проверить, есть ли такая директория или нет.
>>1416992Хорошие прогеры разбежались на нормальные зарплаты в современные языки и технологии. Остались только свитерки, пишущие процедурную лапшу за гроши.
>>1416992нихуяя естьу меня сантиметровые очки-лупы и я прочитал больше 10 книг по крестамподнялся так сказать над вами, червяками
>>1417018Пришло время переустанавливать шиндовс. У тебя система по пизде пошла. Тебе вместо переименовая нужно было просто перенести папку прокта в другую. Возможно получится обойтись только переустановкой Qt, но я бы рекомендовал ресет всей системы.
>>1417042А ты вообще читал, на кой хер это ввели в стандарт?string_view - замена const string& в аргументах функции, да ещё и без нулевого символа.
>>1417024>переустанавливать шиндовсЕще рекомендовал бы сменить сам компьютер, страну проживания и пол.
>>1416462>@fizzbuzz( ⚆ ʖ ⚆), [08.03.19 22:26]a1 = 1if a1 % 15 == 0:print('FizzBuzz')elif a1 % 5 == 0:print('Buzz')elif a1 % 3 == 0:print('Fizz')else:print('1')a2 = 2if a2 % 15 == 0:print('FizzBuzz')elif a2 % 5 == 0:print('Buzz')elif a2 % 3 == 0:print('Fizz')else:print('2')a3 = 3if a3 % 15 == 0:print('FizzBuzz')elif a3 % 5 == 0:print('Buzz')elif a3 % 3 == 0:print('Fizz')else:print('3')a4 = 4if a4 % 15 == 0:print('FizzBuzz')elif a4 % 5 == 0:print('Buzz')elif a4 % 3 == 0:print('Fizz')else:print('4')a5 = 5if a5 % 15 == 0:print('FizzBuzz')elif a5 % 5 == 0:print('Buzz')elif a5 % 3 == 0:print('Fizz')else:print('5')a6 = 6if a6 % 15 == 0:print('FizzBuzz')elif a6 % 5 == 0:print('Buzz')elif a6 % 3 == 0:print('Fizz')else:print('6')a7 = 7if a7 % 15 == 0:print('FizzBuzz')elif a7 % 5 == 0:print('Buzz')elif a7 % 3 == 0:print('Fizz')else:print('7')a8 = 8if a8 % 15 == 0:print('FizzBuzz')elif a8 % 5 == 0:print('Buzz')elif a8 % 3 == 0:print('Fizz')else:print('8')a9 = 9if a9 % 15 == 0:print('FizzBuzz')elif a9 % 5 == 0:print('Buzz')elif a9 % 3 == 0:print('Fizz')else:print('9')a10 = 10if a10 % 15 == 0:print('FizzBuzz')elif a10 % 5 == 0:print('Buzz')elif a10 % 3 == 0:print('Fizz')else:print('10')a11 = 11if a11 % 15 == 0:print('FizzBuzz')elif a11 % 5 == 0:print('Buzz')elif a11 % 3 == 0:print('Fizz')else:print('11')a12 = 12if a12 % 15 == 0:print('FizzBuzz')elif a12 % 5 == 0:print('Buzz')elif a12 % 3 == 0:print('Fizz')else:print('12')a13 = 13if a13 % 15 == 0:print('FizzBuzz')elif a13 % 5 == 0:print('Buzz')elif a13 % 3 == 0:print('Fizz')else:print('13')a14 = 14if a14 % 15 == 0:print('FizzBuzz')elif a14 % 5 == 0:print('Buzz')elif a14 % 3 == 0:print('Fizz')else:print('14')a15 = 15if a15 % 15 == 0:print('FizzBuzz')elif a15 % 5 == 0:print('Buzz')elif a15 % 3 == 0:print('Fizz')else:print('15')a16 = 16if a16 % 15 == 0:print('FizzBuzz')elif a16 % 5 == 0:print('Buzz')elif a16 % 3 == 0:print('Fizz')else:print('16')a17 = 17if a17 % 15 == 0:print('FizzBuzz')elif a17 % 5 == 0:print('Buzz')elif a17 % 3 == 0:print('Fizz')else:print('17')a18 = 18if a18 % 15 == 0:print('FizzBuzz')elif a18 % 5 == 0:print('Buzz')elif a18 % 3 == 0:print('Fizz')else:print('18')a19 = 19if a19 % 15 == 0:print('FizzBuzz')elif a19 % 5 == 0:print('Buzz')elif a19 % 3 == 0:print('Fizz')else:print('19')a20 = 20if a20 % 15 == 0:print('FizzBuzz')elif a20 % 5 == 0:print('Buzz')elif a20 % 3 == 0:print('Fizz')else:print('20')a21 = 21if a21 % 15 == 0:print('FizzBuzz')elif a21 % 5 == 0:print('Buzz')elif a21 % 3 == 0:print('Fizz')else:print('21')a22 = 22if a22 % 15 == 0:print('FizzBuzz')elif a22 % 5 == 0:print('Buzz')elif a22 % 3 == 0:print('Fizz')else:print('22')a23 = 23if a23 % 15 == 0:print('FizzBuzz')elif a23 % 5 == 0:print('Buzz')elif a23 % 3 == 0:print('Fizz')else:print('23')a24 = 24if a24 % 15 == 0:print('FizzBuzz')elif a24 % 5 == 0:print('Buzz')elif a24 % 3 == 0:print('Fizz')else:print('24')a25 = 25if a25 % 15 == 0:print('FizzBuzz')elif a25 % 5 == 0:print('Buzz')elif a25 % 3 == 0:print('Fizz')else:print('25')a26 = 26if a26 % 15 == 0:print('FizzBuzz')elif a26 % 5 == 0:print('Buzz')elif a26 % 3 == 0:print('Fizz')else:print('26')a27 = 27if a27 % 15 == 0:print('FizzBuzz')elif a27 % 5 == 0:print('Buzz')elif a27 % 3 == 0:print('Fizz')else:print('27')a28 = 28if a28 % 15 == 0:print('FizzBuzz')elif a28 % 5 == 0:print('Buzz')elif a28 % 3 == 0:print('Fizz')else:print('28')a29 = 29if a29 % 15 == 0:print('FizzBuzz')elif a29 % 5 == 0:print('Buzz')elif a29 % 3 == 0:print('Fizz')else:print('29')a30 = 30if a30 % 15 == 0:print('FizzBuzz')elif a30 % 5 == 0:print('Buzz')elif a30 % 3 == 0:print('Fizz')else:print('30')a31 = 31if a31 % 15 == 0:print('FizzBuzz')elif a31 % 5 == 0:print('Buzz')elif a31 % 3 == 0:print('Fizz')else:print('31')a32 = 32if a32 % 15 == 0:print('FizzBuzz')elif a32 % 5 == 0:print('Buzz')elif a32 % 3 == 0:print('Fizz')else:print('32')a33 = 33if a33 % 15 =( ⚆ ʖ ⚆), [08.03.19 22:26]= 0:print('FizzBuzz')elif a33 % 5 == 0:print('Buzz')elif a33 % 3 == 0:print('Fizz')else:print('33')a34 = 34if a34 % 15 == 0:print('FizzBuzz')elif a34 % 5 == 0:print('Buzz')elif a34 % 3 == 0:print('Fizz')else:print('34')a35 = 35if a35 % 15 == 0:print('FizzBuzz')elif a35 % 5 == 0:print('Buzz')elif a35 % 3 == 0:print('Fizz')else:print('35')a36 = 36if a36 % 15 == 0:print('FizzBuzz')elif a36 % 5 == 0:print('Buzz')elif a36 % 3 == 0:print('Fizz')else:print('36')a37 = 37if a37 % 15 == 0:print('FizzBuzz')elif a37 % 5 == 0:print('Buzz')elif a37 % 3 == 0:print('Fizz')else:print('37')a38 = 38if a38 % 15 == 0:print('FizzBuzz')elif a38 % 5 == 0:print('Buzz')elif a38 % 3 == 0:print('Fizz')else:print('38')a39 = 39if a39 % 15 == 0:print('FizzBuzz')elif a39 % 5 == 0:print('Buzz')elif a39 % 3 == 0:print('Fizz')else:print('39')a40 = 40if a40 % 15 == 0:print('FizzBuzz')elif a40 % 5 == 0:print('Buzz')elif a40 % 3 == 0:print('Fizz')else:print('40')a41 = 41if a41 % 15 == 0:print('FizzBuzz')elif a41 % 5 == 0:print('Buzz')elif a41 % 3 == 0:print('Fizz')else:print('41')a42 = 42if a42 % 15 == 0:print('FizzBuzz')elif a42 % 5 == 0:print('Buzz')elif a42 % 3 == 0:print('Fizz')else:print('42')a43 = 43if a43 % 15 == 0:print('FizzBuzz')elif a43 % 5 == 0:print('Buzz')elif a43 % 3 == 0:print('Fizz')else:print('43')a44 = 44if a44 % 15 == 0:print('FizzBuzz')elif a44 % 5 == 0:print('Buzz')elif a44 % 3 == 0:print('Fizz')else:print('44')a45 = 45if a45 % 15 == 0:print('FizzBuzz')elif a45 % 5 == 0:print('Buzz')elif a45 % 3 == 0:print('Fizz')else:print('45')a46 = 46if a46 % 15 == 0:print('FizzBuzz')elif a46 % 5 == 0:print('Buzz')elif a46 % 3 == 0:print('Fizz')else:print('46')a47 = 47if a47 % 15 == 0:print('FizzBuzz')elif a47 % 5 == 0:print('Buzz')elif a47 % 3 == 0:print('Fizz')else:print('47')a48 = 48if a48 % 15 == 0:print('FizzBuzz')elif a48 % 5 == 0:print('Buzz')elif a48 % 3 == 0:print('Fizz')else:print('48')a49 = 49if a49 % 15 == 0:print('FizzBuzz')elif a49 % 5 == 0:print('Buzz')elif a49 % 3 == 0:print('Fizz')else:print('49')a50 = 50if a50 % 15 == 0:print('FizzBuzz')elif a50 % 5 == 0:print('Buzz')elif a50 % 3 == 0:print('Fizz')else:print('50')a51 = 51if a51 % 15 == 0:print('FizzBuzz')elif a51 % 5 == 0:print('Buzz')elif a51 % 3 == 0:print('Fizz')else:print('51')a52 = 52if a52 % 15 == 0:print('FizzBuzz')elif a52 % 5 == 0:print('Buzz')elif a52 % 3 == 0:print('Fizz')else:print('52')a53 = 53if a53 % 15 == 0:print('FizzBuzz')elif a53 % 5 == 0:print('Buzz')elif a53 % 3 == 0:print('Fizz')else:print('53')a54 = 54if a54 % 15 == 0:print('FizzBuzz')elif a54 % 5 == 0:print('Buzz')elif a54 % 3 == 0:print('Fizz')else:print('54')a55 = 55if a55 % 15 == 0:print('FizzBuzz')elif a55 % 5 == 0:print('Buzz')elif a55 % 3 == 0:print('Fizz')else:print('55')a56 = 56if a56 % 15 == 0:print('FizzBuzz')elif a56 % 5 == 0:print('Buzz')elif a56 % 3 == 0:print('Fizz')else:print('56')a57 = 57if a57 % 15 == 0:print('FizzBuzz')elif a57 % 5 == 0:print('Buzz')elif a57 % 3 == 0:print('Fizz')else:print('57')a58 = 58if a58 % 15 == 0:print('FizzBuzz')elif a58 % 5 == 0:print('Buzz')elif a58 % 3 == 0:print('Fizz')else:print('58')a59 = 59if a59 % 15 == 0:print('FizzBuzz')elif a59 % 5 == 0:print('Buzz')elif a59 % 3 == 0:print('Fizz')else:print('59')a60 = 60if a60 % 15 == 0:print('FizzBuzz')elif a60 % 5 == 0:print('Buzz')elif a60 % 3 == 0:print('Fizz')else:print('60')a61 = 61if a61 % 15 == 0:print('FizzBuzz')elif a61 % 5 == 0:print('Buzz')elif a61 % 3 == 0:print('Fizz')else:print('61')a62 = 62if a62 % 15 == 0:print('FizzBuzz')elif a62 % 5 == 0:print('Buzz')elif a62 % 3 == 0:print('Fizz')else:print('62')a63 = 63if a63 % 15 == 0:print('FizzBuzz')elif a63 % 5 == 0:print('Buzz')elif a63 % 3 == 0:print('Fizz')else:print('63')a64 = 64if a64 % 15 == 0:print('FizzBuzz')elif a64 % 5 == 0:print('Buzz')elif a64 % 3 == 0:print('Fizz')else:pr( ⚆ ʖ ⚆), [08.03.19 22:26]int('64')a65 = 65if a65 % 15 == 0:print('FizzBuzz')elif a65 % 5 == 0:print('Buzz')elif a65 % 3 == 0:print('Fizz')else:print('65')a66 = 66if a66 % 15 == 0:print('FizzBuzz')elif a66 % 5 == 0:print('Buzz')elif a66 % 3 == 0:print('Fizz')else:print('66')a67 = 67if a67 % 15 == 0:print('FizzBuzz')elif a67 % 5 == 0:print('Buzz')elif a67 % 3 == 0:print('Fizz')else:print('67')a68 = 68if a68 % 15 == 0:print('FizzBuzz')elif a68 % 5 == 0:print('Buzz')elif a68 % 3 == 0:print('Fizz')else:print('68')a69 = 69if a69 % 15 == 0:print('FizzBuzz')elif a69 % 5 == 0:print('Buzz')elif a69 % 3 == 0:print('Fizz')else:print('69')a70 = 70if a70 % 15 == 0:print('FizzBuzz')elif a70 % 5 == 0:print('Buzz')elif a70 % 3 == 0:print('Fizz')else:print('70')a71 = 71if a71 % 15 == 0:print('FizzBuzz')elif a71 % 5 == 0:print('Buzz')elif a71 % 3 == 0:print('Fizz')else:print('71')a72 = 72if a72 % 15 == 0:print('FizzBuzz')elif a72 % 5 == 0:print('Buzz')elif a72 % 3 == 0:print('Fizz')else:print('72')a73 = 73if a73 % 15 == 0:print('FizzBuzz')elif a73 % 5 == 0:print('Buzz')elif a73 % 3 == 0:print('Fizz')else:print('73')a74 = 74if a74 % 15 == 0:print('FizzBuzz')elif a74 % 5 == 0:print('Buzz')elif a74 % 3 == 0:print('Fizz')else:print('74')a75 = 75if a75 % 15 == 0:print('FizzBuzz')elif a75 % 5 == 0:print('Buzz')elif a75 % 3 == 0:print('Fizz')else:print('75')a76 = 76if a76 % 15 == 0:print('FizzBuzz')elif a76 % 5 == 0:print('Buzz')elif a76 % 3 == 0:print('Fizz')else:print('76')a77 = 77if a77 % 15 == 0:print('FizzBuzz')elif a77 % 5 == 0:print('Buzz')elif a77 % 3 == 0:print('Fizz')else:print('77')a78 = 78if a78 % 15 == 0:print('FizzBuzz')elif a78 % 5 == 0:print('Buzz')elif a78 % 3 == 0:print('Fizz')else:print('78')a79 = 79if a79 % 15 == 0:print('FizzBuzz')elif a79 % 5 == 0:print('Buzz')elif a79 % 3 == 0:print('Fizz')else:print('79')a80 = 80if a80 % 15 == 0:print('FizzBuzz')elif a80 % 5 == 0:print('Buzz')elif a80 % 3 == 0:print('Fizz')else:print('80')a81 = 81if a81 % 15 == 0:print('FizzBuzz')elif a81 % 5 == 0:print('Buzz')elif a81 % 3 == 0:print('Fizz')else:print('81')a82 = 82if a82 % 15 == 0:print('FizzBuzz')elif a82 % 5 == 0:print('Buzz')elif a82 % 3 == 0:print('Fizz')else:print('82')a83 = 83if a83 % 15 == 0:print('FizzBuzz')elif a83 % 5 == 0:print('Buzz')elif a83 % 3 == 0:print('Fizz')else:print('83')a84 = 84if a84 % 15 == 0:print('FizzBuzz')elif a84 % 5 == 0:print('Buzz')elif a84 % 3 == 0:print('Fizz')else:print('84')a85 = 85if a85 % 15 == 0:print('FizzBuzz')elif a85 % 5 == 0:print('Buzz')elif a85 % 3 == 0:print('Fizz')else:print('85')a86 = 86if a86 % 15 == 0:print('FizzBuzz')elif a86 % 5 == 0:print('Buzz')elif a86 % 3 == 0:print('Fizz')else:print('86')a87 = 87if a87 % 15 == 0:print('FizzBuzz')elif a87 % 5 == 0:print('Buzz')elif a87 % 3 == 0:print('Fizz')else:print('87')a88 = 88if a88 % 15 == 0:print('FizzBuzz')elif a88 % 5 == 0:print('Buzz')elif a88 % 3 == 0:print('Fizz')else:print('88')a89 = 89if a89 % 15 == 0:print('FizzBuzz')elif a89 % 5 == 0:print('Buzz')elif a89 % 3 == 0:print('Fizz')else:print('89')a90 = 90if a90 % 15 == 0:print('FizzBuzz')elif a90 % 5 == 0:print('Buzz')elif a90 % 3 == 0:print('Fizz')else:print('90')a91 = 91if a91 % 15 == 0:print('FizzBuzz')elif a91 % 5 == 0:print('Buzz')elif a91 % 3 == 0:print('Fizz')else:print('91')a92 = 92if a92 % 15 == 0:print('FizzBuzz')elif a92 % 5 == 0:print('Buzz')elif a92 % 3 == 0:print('Fizz')else:print('92')a93 = 93if a93 % 15 == 0:print('FizzBuzz')elif a93 % 5 == 0:print('Buzz')elif a93 % 3 == 0:print('Fizz')else:print('93')a94 = 94if a94 % 15 == 0:print('FizzBuzz')elif a94 % 5 == 0:print('Buzz')elif a94 % 3 == 0:print('Fizz')else:print('94')a95 = 95if a95 % 15 == 0:print('FizzBuzz')elif a95 % 5 == 0:print('Buzz')elif a95 % 3 == 0:print('Fizz')else:print('95')a96 = 96if a96 % 15 == 0:print('FizzBuzz')elif a96 % 5 == 0:print('Buzz')elif a96( ⚆ ʖ ⚆), [08.03.19 22:26]% 3 == 0:print('Fizz')else:print('96')a97 = 97if a97 % 15 == 0:print('FizzBuzz')elif a97 % 5 == 0:print('Buzz')elif a97 % 3 == 0:print('Fizz')else:print('97')a98 = 98if a98 % 15 == 0:print('FizzBuzz')elif a98 % 5 == 0:print('Buzz')elif a98 % 3 == 0:print('Fizz')else:print('98')a99 = 99if a99 % 15 == 0:print('FizzBuzz')elif a99 % 5 == 0:print('Buzz')elif a99 % 3 == 0:print('Fizz')else:print('99')a100 = 100if a100 % 15 == 0:print('FizzBuzz')elif a100 % 5 == 0:print('Buzz')elif a100 % 3 == 0:print('Fizz')else:print('100')Я принят?
Анончики, сейчас вот начинается лето, и у меня появляется уйма свободного времени. Подскажите, где можно найти опытного человека, который бы просто давал разные задачи и какие-то сроки на выполнения, а потом, по возможности, смотрел результат и давал критику? Из навыков недоджун-уровень знание плюсов, знаком с Qt. В целом я и так буду решать разные задачи, но хотелось бы делать это под надзором более опытного кодера, который подскажет как делать лучше.
>>1417113>Из навыков недоджун-уровень знание плюсов, знаком с Qt.Иди на фриланс.ру и upwork и работай, в чем проблема-то?С такими навыками уже можно на мороженку заработать.Если хочешь подготовиться к собесам на норм рабство у интересных хозяев, зарегься и прорешивай алгоритмические задачи наhttps://www.codewars.comhttps://leetcode.comhttps://www.hackerrank.comТам везде есть заодно и таймлимиты на задачи, хорошо организует.Ну иhttps://www.codingame.com/
>>1417135Одни говорят что олимпиадники это ужасные программисты в продакшене, а другие говорят что нужно решать олимпиады для развития логики. Да и хотелось бы порешать что-то более приближенное к реальности, а не сортировать матрицы 1000 и одним способом. Часто видел как опытные люди описывали свой путь как:>хорошо учился>нашел ментора сеньора-помидора>теперь я сам сеньор/тимлид/архитекторЯ на кодварсе и так решаю иногда, но вот иногда вижу что требуют алгоритмическую базу, а алгоритмов настолько много, что даже не поймешь какие из них реально нужны, а какие не используются с 60-х годов. С фриланса на плюсах проиграл немного, у нас в городе миллионнике вакансий то штук 20 всего, а фриланс это что-то невероятное.
>>1417137Просто забей. Ваше поколение уже ничему толковому не научится. Настоящий программист, чтобы быть тру кодером, должен писать свою ОС в течение многих лет. А вам это неинтересно.
>>1417137ну, бля, задач 300 надо набрать, чтобы тупо руку набитькогда еще студентикте и не задротить олимпиадки, но и хуй не забивать на компетив ресурсы с задачкамисредний путь, в общем
>>1417046>string_view - замена const string& в аргументах функции, да ещё и без нулевого символа.не забывай что стринг вью еще жрет строковые литералы и строки в си стилеэто важноособенно в шаблонохераченье
>>1417042бля, чувак, зачем нужен стринг вью можно выяснить за 10 минут гуглежаебаный в рот, целые доклады на конференциях есть где только эту фичу обсасываютнахуй тут это спрашивать
Я сейчас работаю над проектом, который будет хранить в озу довольно большой объем информации. Так вот, правильно ли я поступлю, если напишу вот так:std::list<Ray> *rayl = new std::list<Ray>(60);А когда мне этот список не потребуется, то delete rayl;rayl = nullptr;Какие подводные?
>>1417266Рано или поздно проебешься и схватишь сегфолт, зато сэкономил 8 байт на указателе.list.clear() для кого сделали, блять
>>1417238не умный, но, сука, эрудированныйсечешь разницу?на конференциях (в частности cppcon) есть особый формат доклада длительностью 5 или 7 или 10 минут, люди подходят быстро рассказывают-показывают и отходят, все это за одну сессиюза частую это самая интересная часть конференцииинтересней, наверное, только практикумы на конфах
>>1417430Инфа которая отсылается в QTcpSocket не отправляется сразу, а накапливается в внутреннем буфере (что бы уменьшить количество системных вызовом). flush заставляет сразу отправить всю накопленную инфу.
Я пизлдец бомблю, потому что не понимаю как вывести текст в ебучий label. Могу сделать сервер на qt, но не вывести ЕБАНЫЙ ТЕКСТ В ЕБАНЫЙ LABEL
>>1417722#include "Chat.h"#include <QDebug>#include <QtGui>#include <QLabel>#include <QPlainTextEdit>Chat::Chat(QWidget parent): QMainWindow(parent){ ui.setupUi(this);}MyServer::MyServer(QObject parent) : QObject(parent){ server =new QTcpServer(this); connect(server,SIGNAL(newConnection()), this, SLOT(newConnection())); if (!server->listen(QHostAddress::Any, 777)) { label_3 ->setText("Бля. Чет не фурычит"); // Вот тут и дальше я хз как вывести текст в форму } else { }}void MyServer::newConnection() { QTcpSocket* socket = server->nextPendingConnection(); socket->write("Вроде подключилось"); socket->flush();}Необъявленный идентификатор
>>1417734Твой сервер не знает, про существование лейблов, и это норма. Все твои ГУИ элементы лежат в структуре ui, а она является членом класса Chat.ИМХО, лучше listen вызывать не в конструкторе, а сделать отдельный метод.При возникновении ошибки сервера, можно емитить сигнал (ну например myServerError(const QString&)). А в чате приконектится к этому сигналу слотом лейбла setText.Также можно транслировать сигнал об ошибке самого сокета. (Надо добавить серверу нужный сиглал, аналогичный QTcpServer, и законектить их).
>>1417757> Твой сервер не знает, про существование лейблов, и это норма. Все твои ГУИ элементы лежат в структуре ui, а она является членом класса Chat.То есть надо написать Chat::ui.label.setText()?За остальное спасибо
>>1417760 C2664 "Ui::ChatClass::ChatClass(Ui::ChatClass &&)": невозможно преобразовать аргумент 1 из "Ui::ChatClass *" в "const Ui::ChatClass &" Chat C:\Users\Andrew\source\repos\Chat\Chat.cpp Иду гуглить
>>1417760Так можно написать, если ui статический публичный член класса Chat. Но так делать не нужно.Можешь серверу сделать член класса - указатель на лейбл и инициализировать его передав твой лейбл как параметр конструкрора. Но это тоже хреновое решение - оно разносит твой гуй по компонентам, которые о нем знать не должны.
>>1417768Я же в первом ответе написал, при ошибке емитить сигнал, в сигнале можно передать текст или код ошибки. В Chat сделать слот, и законектить его с этим сигналом. В слоте уже обработать и вывести текст. Где ты сервер создаёшь?
>>1417859Всегда какой-то объект не виден. У меня есть объект server моего класса MyServer и объект w класса Chat (основной класс). Я не знаю где их связать
>>1417891Мне нужно связать сигнал объекта, который создается в конструкторе другого объекта с слотом объекта главного класса. Как это сделать?
>>1417914Мне сложно сказать что-то конкретное, так как я не знаю какую архитектуру ты напедалил.>Как это сделать?Первый вариант: делаешь геттер для вложенного класса и потом где-то пишешь QObject::connect(obj->getInnerObj(), SIGNAL(signal), mainWindow, SLOT(slot));Второй вариант (получше): во внешнем классе делаешь сигнал c такой же сигнатурой как у внутреннего можно тупо скопировать. В конструкторе внешнего соединяешь сигналы connect(innerObj, SIGNAL(signal), SIGNAL(signal));. Теперь можно приконектить главное окно так: QObject::connect(obj, SIGNAL(signal), mainWindow, SLOT(slot));
>>1418017Его главное окно может спокойно выполнять роль контроллера и вьюхи. И мы даже не знаем что там за модель и есть ли она. Но ведь главное это паттернодрочинг и оверинжинирнутое решение для лаба1, да? Чувак только учится, сделает криво раз, второй раз уже будет лучше.
>>1418471Даже стажёр ответит, чисто из предположений, что эта штука похожа на лямбду (на самом деле это она и есть) и что тут используются диграфы. На диграфах синьоры начнут кукарекать, что их удалили в 17 плюсах, но это не так
>>1413564 (OP)Бля посоны, не бейте лучше обоссыте плешь может волос отрастет обратно.Как запустить программу из мейна? Я имею ввиду вот у меня есть класс в котором все реализовано, допустим игра угадай загаданную цифру от одного до охуллиона. Как этот класс запустить из мейна и зациклить его на выполнение до успеха, ну или до усрачки, без goto? И как его потом вырбить нахуй?А то у меня только с костылями все выходит.Я заглядывал в другие сорсы и видел там что то в духеint main{class vasyan;vasyan.Run();return 0;}Но когда я делаю то же самое у меня компиятор ругается и все валится. ЧЯДНТЕсли что, дописывать и улучшать чужые сорсы я умею.
>>1413747>ембедед на си>c++ умрет>язык который чуть ли не лично гитлера в попку целовал переживет свою осовремененную реинкарнациюХладен сказ бояринИ не надо мне тут про то какой С чоткий. Он устарел морально, как телефоны алкатель.Вроде работает и можно даже обойтись без главного правила связи громче крикнешь дальше услышат но использовать его сейчас, когда даже ссаный китаефон с цианом за 20 баксов может сделать все то же самое но намного лучше? Нахуя?
>>1418522Да ты траллиш. Таких тупых овощей не бывает.Самый последний пхпшник знает про оператор условия и цикла. Но если вдруг что-то мешает тебе погуглить и прочитать про это самостоятельно, можешь начать погружение в удивительный мир программирования отсюда:https://ru.cppreference.com/w/cpp/language/whileизвини, что ссылка на русский цппреференс, но ты своим постом себя несколько дискредитировал
>>1418586Это я и так знаю.А что делать если я какую то более серезную программу уровня "ебашишь мышкой по квадратикам и они меняют цвет" сделать захочу? Или тот же тетрис ебучий ссука. Тоже цикл вставлять?Я что то упускаю.
>>1418592Так-то во всяких там qt тоже есть цикл – цикл сообщений. Только он заранее написан и спрятан. Из него вызывается всякая хуйня при разных условиях. Тебе остается только переопределить какой-нибудь OnClick, и при нажатии вызовется не пустая затычка, а твой говнокод. В принципе, такую систему легко изготовить самому. Например делаешь класс с виртуальным методом OnUpdate и обычным методом Run, внутри run тот самый бесконечный while(1) {OnUpdate();}Потом тупо наследуешь класс от него, переопределяешь ОnUрdate. В мейне как раз и остается только создание этого класса и c.Run();
>>1418719Мне как то знакомая тян сказала что только пацаны могут так тупо отвечать: вопросов несколько, а ответ один.
>>1418610Хммм...И это все эксели с тридэмаксами запускаются и работают с помощью цикла while, или другого похожего?!Я то думал там какая то тайна за семью печатями.
>>1418735>А как же там тогдаМногопоточно, иногда даже неблокирующе - если не совсем дебилы вроде тебя делали.А в тридемаксах еще и в шейдеры дохуя вынесено, а исполнение на гпу - это просто мечта шизофреника вроде меня
>>1418738Хуета какая то выходит тогда. Вот смотрю я на исходники блендера (он написан на С но да похуй примерно понятно что там происходит) и я вижу где он там создает треды , вижу какие то костылики чтобы создать не гомогенный мемпул.Но я блять нигде не вижу никакого цикла который бы крутился хоть в одном треде для того чтобы блендер работал.
>>1418739Ты так и не понял, что это я потролил двачик, а не он меня. Не видать тебе 300к в секунду, никогда.
>>1418744>нигде не вижу никакого цикла который бы крутился хоть в одном тредеПотому что их там нет, капитан.>>1418747>эти нелепые оправданияЕбать ты омеган.
>>1418738Нету никакого другого способа чтобы бесконечно выполнять программу кроме как while(true). Просто это иногда может быть спрятано в библиотеках или еще в каких-то механизмах.
>>1418758>или еще в каких-то механизмах. Ага, есть такой механизм называется операционная системаПиздец вы тут дебилы все поголовно.
>>1418761>Надеюсь это толстота. Напрасно надеешься, оно >>1418758 и правда такой дебил.И школьник, скорее всего.
>>1418759Вот у тебя есть main(){}. Все что делает ОС - последовательно выполняет операции, которые ты в мейне написал. Всё.Ты можешь создать дополнительный процесс. Но он также будет выполняться до тех пор, пока не дойдет до конца программы.
>>1418763>делает ОС>выполняет операции, которые ты в мейне написалА может и толстота.Хотя нет, скорее всего просто школьник.То есть хуже червя-пидора и тупее табуретки.
>>1418771Обычная ставка 50 евро в час, но лично для тебя льготный тариф всего 70 евроКак платить удобнее?
>>1418772Так уж и быть, оплатил тебе за щеку. Вторая порция - после.Если хорошо объяснишь, могу в качестве чаевых нассать тебе на ебло.По рукам?
>>1418712Хули с твоим годом. Может ты раз в неделю под пивас сппконы смотрел. Часов сколько потратил?
>>1418766Я сторонний человек в вашем споре, но скажу, что любая программа, имеющая пользовательский интерфейс, имеет и главный цикл, в котором проверяется наличие событий типа нажатия клавиш и движения мыши. Если создается второе окно программы (открыт второй документ), то будет создан отдельный поток для него, который также будет включать в себя главный цикл для взаимодействия с пользователем. Асинхронно могут выполняться задачи, не требующие внимания пользователя вплоть до своего завершения. Но человек взаимодействует с программой всегда через главный цикл, который программой и управляет (либо несколько таких циклов в случае нескольких окон).
>>1418779>любая программа, имеющая пользовательский интерфейс, имеет и главный цикл>проверяется наличие событий типа нажатия клавишДурачок, ты отстал от жизни лет на 20 на 10 если мерять плюсами, хаха
>>1418780>Продолжать или забить хуй?Забей, если ты не готов убивать всё свободное время на изучение программирования то ты и через 5 лет будешь на уровне laba1.cpp.
>>1418784>как программа узнает о том, что я кликнул мышкой.Через события/сообщения/т.д.Еще дебильные вопросы будут?
>>1418787Так через события или сообщения? Это важно.И откуда появляются они? И где они хранятся? Кто их обрабатывает?
>>1418791>события или сообщенияЗависит от языка.> >есть такой механизм называется операционная система>И откуда появляются они? И где они хранятся? Кто их обрабатывает? Ебать дебил.И да, обилие риторических вопросов - верный признак омегана и лоха по жизни.
>>1418799>эти проекции физиологически не способного понимать устройств современных ОС олигофренаХуево быть тобой.
>>1418804>фантазирования Оно еще и школьник.>невозможно понять. Оно еще и тупой школьник тавтология, хаха
>>1418805А что конкретно нужно знать из матана? У нас за весь курс конкретно матана были дифуры, интегралы, производные и пределы. Где это использовать то?
>>1418807>дифуры, интегралы, производные и пределыХоть что-нибудь помнишь?Хотя можешь не отвечать.>>1418808Ясно.
>>1418810Что характерно - на вопрос не ответил.>>1418811Если надо объяснять то не нужно объяснять.Жизнь научит.>>1418812И да, добро пожаловать в МВП тред.
>>1418818Блять я всё помню, это логически следует из моего ответа. Ты то ответишь на вопрос, который тебе уже трижды задали, или дальше будешь жопой вилять?
>>1418821>логически следует из моего ответаВообще-то не следует, и в большинстве случаев подобные "отличники" ничего не помнят.>я всё помнюТогда малаца, принимается.>по часу занимаюсь>каждую тему разбирал по многу часовСам себе и ответил.
>>1418812Я просто привык помогать по мере сил. Лучше отвитить неправильно/неточно, чем тред уплывет.>>1418801И чего такого в новых ос, чего не было до этого?
>>1418822В чего ты взял что тебе один и тот же человек отвечал. Может перестанешь вилять жопой и придираться к формулировкам предложений, а ответишь на вопрос? Жду момента, когда начнутся придирки к запятым и построению предложений
>>1418830>чего такого в новых ос, чего не было до этого?Практически всё, например.Можешь сам сравнить те же ДОСы с виндой/пингвином/бздями.>>1418832>ответишь на вопрос?Что характерно - самого вопроса так и нет.
>>1418837Ясно, не ожидал жирноту в тематике увидеть,думал просто какой-то чсвшный тип,а тут зеленый в чате по крестам. Ну сиди семени тут, я ушел.
>>1418837>Можешь сам сравнить те же ДОСы с виндой/пингвином/бздями.Во всем ИТ идеи одни и те же, начиная с 30-х годов. Ничего кардинально нового не было придумано. Только костыли подкладывают для новой аппаратуры и для безопасности.
>>1418837>самого вопроса так и нет>>1418841>я ушел. Пиздец ты омежная чмоша.>>1418844>начиная с 30-х годовКодерок на пидорской ленте детектед.Правильно его замочили, кстати - мало что пидорас и чмо, так еще и как математик говно полное.
>>1418849Школотрон, съеби с треда, плиз. Иди в доту поиграй, или что там школьники любят? Фортнайт?Тебе пока рано тут сидеть.
>с 30-х годовПиздец. Ты даже для красноглазого треда слишком толстый. Хотя ты даже не троль ведь, просто ебанутый ньюфаг/студентишка.
>>1418610>Так-то во всяких там qt тоже есть цикл – цикл сообщений. у тебя ос замораживает потокпотом по событию размораживает его а цикл сообщений сделан потому чтобы за раз обработать несколько сообщений, если такая ситуация случитсяу тебя программа не будет крутить постоянно while(true), это каким надо быть ебанутым чтобы так думатьwhile(true) - это такой шаблон когда надо в цикле обработать столько сколько ты еще не знаешь надо, а по завершению обработки выйти из цикла по break (как раз это и происходит в случае обработки сообщений)
>>1418871>у тебя программа не будет крутить постоянно while(true), это каким надо быть ебанутым чтобы так думатьНо ведь так делаются все lab1.cpp с менюшками.
>>1418871>у тебя ос замораживает поток>потом по событию размораживает его Это если ты делаешь в лупе слип или вешаешь процесс на системный таймер.Просто луп грузит одно ядро на 100%, я проверял, когда некое приближение рт системы на винде изображал.кро
>>1418878>ядро на 100%>некое приближение рт системы на винде изображалТо ли дебил, то ли школостудень скорее и то и другое, хаха
>>1418872>while(true)while(true) это не более чем идиома для обработки в цикле неизвестного количества итерацийв случае с обработкой событий от gui этот цикл нужен лишь по той причине, что когда ос "пробуждает" по событию поток, может произойти еще несколько событий, + когда собственно поток работает, могут прилететь еще события, вот и нужен этот цикл
>>1418871У тебя ОС знает какие кнопочки ты сделал в своем приложении и какие при этом коллбеки вызывать, ага.
Чем можно проверить кот? Наговнокодил либу на 10к строк, напустил на неё шланг-анализатор, что-то пофиксил, теперь он говорит, что всё ок. Какие еще инструменты? (кроме написания юнит тестов вручную)
>>1418906> в случае с обработкой событий от gui этот цикл нужен лишь по той причине, что когда ос "пробуждает" по событию поток, может произойти еще несколько событий, + когда собственно поток работает, могут прилететь еще события, вот и нужен этот циклтаким образом, если бы>когда ос "пробуждает" по событию поток, не могло бы произойти еще несколько событийи>когда собственно поток работает, не могли бы прилететь еще событият.е. если бы прилетали события только в то время, когда поток заморожен, то цикл не был бы нужен?хуйню несешь, школьник тупой. схуяли после разморозки поток начнет новое событие обрабатывать без цикла? разморозка его состояние как-то ресетит? можешь не отвечать.
>>1418923Если у тебя там нет функций на сотню-другую строк - то все нормально.>кроме написания юнит тестов вручнуюМожешь еще написать интеграционные тесты вручную
>>1418925 >эта визгливая мелкобукваТебе даже ответили исчерпывающе, гнида - >>1418920И не брегливо же было всерьез на этой дебилопараше отвечать, хаха.
>>1418929>не вижу ничегоОно еще и слепой дебил.Даже жаль тебя хаха, жаль - какой я шутник, это что-то
>>1418925у тебя в приложении может сформироваться очередь событий, требующих обработкипо этому там цикл и нуженно этот цикл НЕ крутится все время работы приложениякогда приложение обработало все события, то главный поток приложения засыпает, вызвав соответствую функцию операционной системыя специально стараюсь объяснить попроще, буквально на пальцах
>>1418953> когда приложение обработало все события, то главный поток приложения засыпаеА когда просыпается что происходит?
Блядь. Прямо сейчас пишешь while(true) doSmth(). Открываешь, смотришь как загружен процессор. Сравниваешь с любым гуём, который ничем не занят. Убеждаешься, что не всё так просто, иначе не было бы понятия "энергосбережение"
>>1418975просыпается приложение у тебя по определенному событиюНО когда приложение регистрирует свои события в операционной системе, оно указывает для каждого события коллбек - код, на который операционная система передаст управлениечаще всего же это оказывается общая для большинства событий гуи функция, в которой и крутится этот самый несчастный цикл обработки сообщений
>>1418977Потому что надо sleep ставить, очевидно. Тебе не нужно дохуя частоты обработки для гуя. Остаётся все тот же самый while внутри.
>>1418980> оно указывает для каждого события коллбек - кодТоесть после выполнения всех событий и сразу перед засыпанием все дерьмо на стеке умирает, ведь у колбека будет свой стек? Откуда берется тред для выпонения колбека?
>>1418980> приложение регистрирует свои события в операционной системеТы ебанутый? Нет такого механизма, чтобы зарегистрировать твои ебаные кнопочки в системе. Все делается посредством внутрянки самой библиотеки.
>>1418996У них там все на унылом while. Я то думал у них там старый добрый goto. Описание ивентлупа:> Enters the main event loop and waits until exit() is called. Returns the value that was passed to exit().Сам цикл на 224 строке https://github.com/qt/qtbase/blob/53d62b8fcbb639bd625777c8f1c01764445fb1c4/src/corelib/kernel/qeventloop.cpp while (!d->exit.loadAcquire()) processEvents(flags | WaitForMoreEvents | EventLoopExec);d->exit - это QBasicAtomicInt который выставляется в true при вызове exit()72 строка https://github.com/qt/qtbase/blob/53d62b8fcbb639bd625777c8f1c01764445fb1c4/src/corelib/kernel/qeventloop_p.hИщебы найти как именно exit() (ну и ексепшены) обрабатывается но впадло.
>>1419018Ну вот. А кто говорил, что не бывает циклов, пусть идет нахуй писать хеллоуворлд на winapi. И не возвращается, пока без цикла не сделает.
>>1419016да, так и есть: целевой ос глубоко похуй на кнопочки что ей от процесса надо (когда он регистрирует событие в системе) дак это куда передать исполнениекасательно гуи тут будет некая разница в том, нативный ли гуй либо приложение (либо фреймвор) сам его целиком отрисовываетно суть не меняется от этого
>>1418989ну ебать, стек и стекв стеке же нет никакой магии, просто кусок памяти в виртуальном пространтсве процессаболее того, у процесса может быть аж до 8 системных стеков, между которыми процесс будет переключатся туда-сюдасамое простое, это когда процесс переключается с кернелла (свой стек) на юзерспейс(другой стек), но это вообще простейшие вещи которые должен знать любой крестоблядокгуевое приложение с активным вводом-выводом вообще большую часть времени выполняется в кернеллеэто приложения с вычислительной нагрузкой могут в юзерспейсе сидеть большую часть своего времени
а вообщеэти системы построенные на обработке событий, позволяют рализовывать отзывчивые gui-приложения, но которые при этом выполняют либо интенсивные фоновые вычисления либо интенсивный ввод-выводпри этом делая это все это в однопоточном режимевообще, этим и занимались кодеры на дельфи, на winapi, на mfc, на qt десятки лет уже, все работалозабавное, что текущее поколение кодеров вообще, похоже, не понимает этогодля них типа если у тебя прога с гуем и надо что-то длительно выполнять, то, бля, обязательно надо начать костылить многопоточку
Мелкобуква, хватит плести всякую чушь. Напиши хоть раз свой примитивный гуй с нуля, и поймешь как оно работает.
>>1419048В бесконечном цикле чекаешь клики мышью, смотришь куда тыкнуло, вызываешь события, спишь, чтобы не жрать проц, повторяешь снова.
>>1418953понятное дело что он засыпает и не крутится постоянно. но если бы там не было цикла, то что бы он делал, если бы проснулся во второй раз? он бы проснулся и завершился.
>>1419050на уровне прикладного программиста, использующего некий гуй-фреймворк это именно так и выглядит, я согласенесли же попытаться объяснить как это работает уровнем чуть ниже, то настолько простое объяснение не прокатит
>>1419070Высокий уровень на то и высокий, что независим от низкого в общем случае.Низкий уровень не добавляет ничего принципиально иного. Процессы - это процессы, они просто запущены и делают код, пока он есть; ОС только менеджит их запуски, ни в какие внутренние события она не лезет. Клики мышью - это клики мышью, они не триггярят сами по себе никакие события.
>>1419040если вкратце, когда ос по событию пробуждает твой процесс, коллбек же дожен перейти на какой то код? да? дак вот, переходит то он на функцию содержащую цикл обработки сообщенийв winapi эту функцию чаще всего называют WndProcте "бесконечный" цикл не будет на самом деле бесконечнымэта функция будет много-много раз выполняться, возможно за раз будет обрабатывать несколько сообщений, именно для этого в ней и нужен цикл
>>1419079те это не тупо один раз запустили цикл в функции и он "живет" все время работы программыоб этом я тут и толкую 10й пост подряд
>>1419079Какое еще событие пробуждает процесс? Ты можешь ответить?ОС не будет шурудить твой код, чтобы выбрать нужный коллбек. Коллбеки у тебя в либе/приложухе хранятся и она как раз вызывает их, а не ОС.
>>1419081бля, чувак, это таки не таккакой бы высокоуровневый фреймворк ты не пользовал, в самом низу будет парочка системных событийпотому что только ос управляет потоками: останавливает и пробуждаета когда поток пробуждет ос же надо знать с какой точки кода начать его выполнение, да?дак вот эта точка входа указывается коллбеком при регистрации событияв качестве точки входа часто как раз оказывается фунция, содержащая главный цикл обработки сообщений, но не всегда
>>1419092>указывается коллбеком при регистрации событияКакой коллбек? Какое события? Кто чего регистрирует?У тебя какая-то магия вместо объяснения.При условном sleep ОС забирает выполнение у процесса. По завершению слипа процесс продолжает выполняться с того же места. Все, нет никаких событий. while (true) {вызываешь обработку гуя;sleep(100);}
>>1419098>По завершению слипа процесс продолжает выполняться с того же места. Все, нет никаких событий. ясновсе, заканчиваем обсуждение
>>1419098Поток в итоге 99.9% времени тупо спит и нихуя не делает. Найс производительность, вам бы в джава тред съебать уебкам, да даже там вас засмеют. Про асинхронность никто не слышал. Сразу видно лето, вкатывальщики пол треда уже засрали.
>>1419098>>1419114Пиздец ты дебил.Нет, вовсе не толстота - очевидная олигофрения в медицинском смысле очевидна.
>>1418763>Вот у тебя есть main(){}. Все что делает ОС - последовательно выполняет операции, которые ты в мейне написал. Всё.Ты серьезно так считаешь? Щитпостинг 80 уровня, просто пиздец.
>>1419114>Ты так и не ответил какие такие события заставляют процесс проснуться.в зависимости от того, как отрисовывает контроллы gui-фреймворк, который ты используешьпод виндой, к примеруон может использовать нативные контроллы - тогда ос будет просыпать твой поток, "отловив", к примеру, клик по конкретной кнопке, и "пробудив" поток, отошлет ему именно это сообщениеили, если фреймворк сам отрисовывает свои контроллы, то ос будет пробуждать поток просто по наиболее "общему" событию, типа такого "на полотне" приложения что-то случилось, вот тебе тип клика (или нажатие клавиши) и его координаты, а приложение уже дальше само решает что делать и само отрисовывает
>>1419304алсо, в случае нативного gui-фреймворка, в ядре будет зарегистрировано целая куча сообщений от приложенияа в случае когда фреймворк сам отрисовывает - только минимум сообщений
>>1419306это в винде в ядрев линуксе же примерно похоже, но только все это будет происходить на уровне X11 (либо фреймбуфера, либо вейланда)
повторюсь, никакой магии тут неттупо регистрация событий, навешивание коллбеков и прочеетехники прямиком из 70х
>>1419312ой, всенет, это блядская магияв твоем черном ящике сидит маленький эльф и быстро перерисовывает тебе на экран картинки
Ебанутся, я думал меня уже в говно макнули ответом на вопрос как программу запустить на объектах а тут срачельник устроили по этому поводу что цеклы не цеклы и вообще иди нахуй.Такое чувство что тут только пхписты с жабаебами в основном сидят. Пойду на стаковерфло спрашивать.
>>1419336>месседжи, каллбэки, корутины, эвентыТы не кукарекай не по русски а пруфы давай.Желательно на .рт
HiI need simple implementation of ping utility (on ICMP) for my project on clean C++Can you help me find that Thank in advance
>>1419364A quick Google search reveals this Linux implementation. Is this what you were looking for?https://gist.github.com/KelviNosse/930988c7dda1966e164a712fa32dc567
>>1419257>На Русском давайAlso, why u hate some English sources, but don't write code on Cyrillic yet ? Maybe u must use all authentic in this case (software/standards/etc) ? Nope, u cant' ? Well, shut up.
>>1419304>тогда ос будет просыпать твой поток, "отловив", к примеру, клик по конкретной кнопке, и "пробудив" поток, отошлет ему именно это сообщениеПриведи, пожалуйста, примерный кусок кода, которым реализуется регистрация нажатия кнопки гуи в ОС.
Парни, не серчайте, я сисадмин, с гуем работал очень мало (хотя и пишу много скриптов). Хочу приблуду сделать, которой можно мониторами рулить, наподобие arandr. Я так понял, самое простое - это взять Qt и запилить на нём. Но у меня две проблемы:1. Виджеты какие-то не такие (мне тупо надо несколько прямоугольников нарисовать, где их брать?)2. Qt Creator очень часто крашится на моей системе (но это ожидаемо). Можно как-то без него обойтись, ну типа как с командной строки GCC компилировать?
>>1419410Не, надо нативным и без зависимостей. Я питон с горем пополам знаю, можно было бы PyQt попробовать, но это полагаться на питон и опять же мне всего-то виджет нужный взять
>>1419395Можно на winsock сделоть>>1419375Приятно наверное всякую такую мемную чушь в голове держать, покрыть нечем, извини.>A quick Google searchЯ общался с гуглом несколько часов на нескольких языках. Мне нужно наипростейшее решение, без мультипотоков, без подключения хуевой горы библиотек от нехуй делоть, без обработки сообщений как там автору заблагорассудилось, тупо пример эхо запроса с выводом, все. Ну и для шинды офк.>безанглийскаваникудаНу так ты уже захуячил все нарусском ? Так неси показывай !>с таким уровнем языкаУровнем средней руки америкоса что ле ? Коли мой уровень так низок, подсоби, укажи на недостатки.
>>1419468Максимально базовый пример c WinAPI, для работы нужно будет линковать iphlpapi.lib и ws2_32.libhttps://docs.microsoft.com/en-us/windows/desktop/api/icmpapi/nf-icmpapi-icmpsendecho
>>1419468Твои посты это wordbyword перевод кальки, которую ты придумал на русском. Не знаю что такое уровень средней руки америкоса, но это максимум уровень В1-В2 и способность воспринимать большую часть неформальной речи. Я не могу даже представить себе как ты путая предлоги способен читать тех. документацию по языку, да ещё и наезжать с таким уровнем мол учите английский быдло еп))
>>1419478>Твои посты это wordbywordКхм, я все же ожидал более предметной критики. Пример, цитаты, с референсом к конкретным синтакисческим/семантическим правилам. И я и средний американец мыслят и зачастую говорят так как оно появляется у них в голове, не стихами и прозой. Я не заявляю о владении языком на fluent уровне илитипа того, но и найти здесь (в тройке достаточно простых предложений без времени) что - то изрядно безграмотного немогу. >Не знаю что такое уровень средней руки америкоса>способность воспринимать большую часть неформальной речи>Я не могу даже представить себе>представить > способен читатьКхм, во - первых меньше фантазируй, а то вот это >наезжать с таким уровнем мол учите английский быдло еп))как раз - таки выдумака на русском.Во - вторых, чтение, письмо и прочее немного разные вещи, уж читать при хорошем сл. запасе, и уж тем более если тех. документация из сферы которой ты занимаешься много способностей не надо. Вот 16 времен юзать в хвост и гиву, да.В прочем, ты меня уже утомил, можешь пойти нахой.>>1419480Может быть, гляну, пасиба.
>>1419484Да кстати, насчет >наезжать с таким уровнем мол учите английский быдло еп))Не ты ли это осуществил, а ?>с таким уровнем языкаКак бы намекая вот у меня то он вот такой, не то что у тебя. А зачем я это вообще написал, опять же придумав >кукарекают про безанглийскаваникуда?ну так чтобы показать им тут всем что> учите английский быдло еп
мимо крокодилКак правильно подключать С библиотеки при общем использовании крестов?Подключаю хеадер, добавляю главный исходник библиотеки и ставлю флаги на языки, но линкер выдаёт кучу помоев.
>>1419535Что за главный исходник библиотеки?Тебе надо либо все сурсы подключить в проекте, либо указать в линкере на .lib. При этом в additional include directories нужно путь ко всем хедерам указать.Возможно еще нужно в extern "C" { } обернуть инклюд.
>>1419535Мб либа скомпилена другим компилятором или его версией, попробуй сам собрать или найти подходящую
>>1419560Пробовал все включать и с порядком разным, сейчас пробую скомпилить отдельно, но линкер всё равно ругается.Если конкретно, то https://github.com/astrand/xclipЧерез мейк собирается, но его понять не могу пока.>>1419568Нет, проблема в другом.Сейчас ругается и не видит XrmInitialize и смежные. man XrmInitialize говорит, что лежит оно в <X11/Xresource.h>, но при подключении никакого эффекта.
>>1419580-lX11 и -lXmu решили. Спасибо Анону, который посоветовал собрать отдельно.Было подобное в голове, но эти слова заставили делать.
Ананасы, слышал в последних версия языка добавили замену использования __func__ __line__ и прочих переменных, но как она называется. Гугол выдаёт говно старое.
Обновил qtCreator и теперь он показывает вот эту F1 при наводке на что угодно. Как отключить? Просто место занимает и глаз мозолит. Уже даже F1 разбиндил, и всё-равно.Зачем и кому это нужно? Ненормальные что ли?
Кто нибудь настраивал удаленную сборку и дебаг под линукс по ssh в Visual Studio? Как сделать чтобы пробрасывался дисплей в xming?
>>1420008bind есть, return есть, последовательность функций сохраняется и потом по вызову return(ну у меня это run()) вычисляется значение. Или ты к тому, что функции нечистые, cout используется и тд?
>>1420013Ну тащемта метапрограммирование на плюсах оче похоже на хацкель, ток с поправкой на то, что типами оперируем, дежавю ловлю постоянно.
>>1420014Аа, ну ладно тогда. А то я читал про монады, https://ru.wikipedia.org/wiki/Монада_(программирование)там был пример на джаве и типа сделал на плюсах аналог, но там прямо сразу вычисляется значение, короче вычисление нихуя не отложенное получается, монада же должна именно последовательность вычислений хранить, а не тупо последний результат. Это тупо в общем.
>>1419753Так подсказки то не так плохи - они показывает родное имя типа хотя бы, а вот зачем добавили уродскую F1 я так и не понял.На форуме написали, мол это Clang Code Model, я пробовал отключать-включать модули, и никаким образом вот эту всплывающую подсказку так и не смог найти, там уже просто ничего не работает, но F1 оно всё-равно рисует (в тех местах, где всё ещё может вывести подсказку).Поставил 4.7.2 - и всё заработало как надо. Кошмар просто, поехавшие, только посмотри насколько так минималистичнее.
Как в qt подрубить русский язык? Если менять текст лейбла в дизайнере, то все нормально отображается, а если в коде, то вопросы вместо текста.
Ананасы, есть книжка по паттенрнам банда четырёх, везде её рекомендуют.А по мимо неё есть ещё подобные книжки, желательно связанные с С++?
>>1420000Я давно на этих ваших плюсах не программировал, но у вас что, уже ссылки на функции нельзя делать?На хуя городить такой злоебучий огород, когда можно просто передавать ссылку на функцию туда, где тебе НУЖНА ЕБАНАЯ ФУНКЦИЯ?
>>1420180Никогда не пробовал main.cpp инклюдить, не знаю.>>1420182Лучше не надо. Пиши в заголовочнике объявление классов и функций, в цппшнике определение их, а в main инклюдь заголовочник.
>>1420183Я только сейчас понял что я написал непонятно. Не метод определен в main, а объект, но сделал как вы сказали. Теперь даже ошибку не могу понять
>>1420215Ты какой-то хуйней занимаешся. Если хочешь продолжать то в Chat.cpp объяви Chat(Класс) w с модификатором extern Но такого быть не должно, тебе стоит серьезно задуматься над своим поведением.
>>1420221Могу описать логику своей бадлопрограммы, а вы скажите в каком месте я дурак скорее всего в любом, но скажите где особенно
>>1420224Я понимаю, что ты пробовал, я вообще не уверен в том, как оно будет работать, extern не extern.
>>1420225Опишу че хочу сделать, все равно делать нехуй.Хочу вывести сообщение из tcpsocket в plaintext. Забиндил сигнал ReadyToRead или как он там[/spoiler на свой слот, в котором вызываю метод объекта Звучит как то странно, поэтому, пацаны, не бейте, лучше обоссыте
>>1420227Коментируй все кроме пустой main(). Проверяй что компилируется. Потом постепенно раскомментируй стараясь на каждом шаге добавлять как можно меньше строк и компилируй. Ошибки исправляй.
>>1420229Не понял. Зачем? Самая главная проблема в том, что объект не виден в других файлах, кроме того в котором он объявлен. Тут всего одна ошибка о неопределенном идентификаторе выскакивает. Десяток других при попытке исправить одну.
В gcc/mingw есть ключи -mavx2 -msse4 и прочее. Если прописать mavx/mavx2, то быстродействие только падает раза в полтора. Это совсем бесполезная штука, верно?Как эти расширения использовать, посоветуйте книжку/статью, чтобы цельное представление составить? Как оно с многопоточностью сочетатется, например, есть ли какая-то задержа-загрузка перед первым использованием инструкции из этих расширений и всё в таком роде.Ассемблерные вставки более-менее умею, но в gcc они довольно уродские, мягко говоря. Ещё увидел в примерах x86intrin.h, который выглядит человечнее.
>>1420422Погугли статьи про векторизацию и автовекторизацию. На счет книг хз какие есть.Тут по практическому использованию интринсиков есть: https://www.codeproject.com/Articles/874396/Crunching-Numbers-with-AVX-and-AVXНакладные расходы могут возникать при загрузке/выгрузке данных из регистров, при использовании каких-то хитрых манипуляций внутри регистров. Но при автовекторизации это по идеи сам компилятор должен оценивать.Плюс сами элементы в памяти крайне важно как расположены. Лучше всего если это линейных массив элементов без пропусков, и выровненный в памяти (aligned_alloc).Алсо, векторизацию можно комбинировать с распараллеливанием, эти векторные модули на каждом ядре процессора есть.
Иногда бывает так, что нужно сделать массив типа какой-то структуры (пикрелейтед).Обычное такое нужно для описания данных для какого-то состояния.Нужные данные получаю просто по индексу (кастя, например, STATE1 к инту).Так вот, такое мне кажется не очень хорошим решением. Можно ли это всё как-то сделать иначе?Как вариант добавить в структуру поле типа этого самого enum class и когда нужно получить данные, то через какой-нибудь std::find_if нахожу нужное.Можно с помощью map или unordered_map, но это кажется перебором, особенно если этих состояний несколько штук.
>>1420479> Нихера не понятно, что ты хочешь делать? Строчку 20 переделать на что-то другое.Два вариант я привёл в прошлом посте.> Какая проблема при этом? Проблема в том, что данные в массиве должны всегда идти в строгом порядке (как указано в перечислении).Легко запутаться в этом и, также, когда решу по каким-то причинам поменять порядок в перечислении, я должен буду менять данные и в массиве.
>>1420484> Проблема в том, что данные в массиве должны всегда идти в строгом порядке (как указано в перечислении).std::map<State, std::vector<MyStruct>>> Легко запутаться в этом и, также, когда решу по каким-то причинам поменять порядок в перечислении, я должен буду менять данные и в массиве.За смену порядка в перечислении обычно пиздят до потери сознания
При объявлении MyStruct yoba {}, как я понял, компилятор делает memset(&yoba, 0, sizeof(MySturct)). Я могу как-нибудь перегрузить эти скобочки, чтобы вместо мемсета там была моя имплементация?
>>1420531Если у тебя там в качестве полей структуры какие-то классы из std, то вызывать для них memset как-то не очень.
>>1420544Ну, например, в конструкторе (класса std) происходит какая-нибудь аллокация, а ты своим мемсетом затрёшь переменные которые отвечают за размер памяти, указатель и тд.
>>1420561>Не будет так работать.Не может такого быть. Перед всеми инклюдами дефайн поставь. Ну или при MyStruct a{} memset не вызывается.
>>1420575Прямо в определение структуры не могу писать, она же не моя. А у меня выше не конструктор по умолчанию? Ты сказал так не стоит делать.>>1420585Мне нужно подменить мемсет только в случае обнуления структуры, а не глобально. Это тоже пердолинг получается какой-то.
>>1420599Типа компилятор неявно её использует даже без инклюдов и всего, если запустить с флагом -nostdlb тогда не будет, может ещё какие-то флаги есть, чтобы конкретную функцию выключить из линковки, но я хз.
>>1420645Нет, ты в этой строке создаешь временную переменную, которая сразу же удаляется. Конструктор базового класса будет вызван до входа в тело конструктора. Если не веришь, посмотри ассемблерный вывод твоего говна.
>>1420658Не верю, потому что несколько раз прошелся дебагером по коду, все там нормально. Зачем ты обманываешь меня?
>>1420441За статью спасибо, то что нужно, про логику названий, про всё это, а остальное можно вручную проверять и выяснять в конце-концов, что и как быстрее работает.>aligned_allocХм, его нет. Даже с -std=c++17. А _aligned_malloc треует своего собственного _aligned_free, там прям то же самое, что я уже почти собрался сделать из обычного malloc-а.>эти векторные модули на каждом ядре процессора есть10/10, зачем я вообще эту видеокарту мучил, которая хоть и быстрее, но меньше чем охулиард штук считать на ней мало смысла.
>>1420663>Не верюТвое право, но ассемблер и стандарт не обманывают: https://gcc.godbolt.org/z/8knfmFЕсли тебя этот код не убедил, то добавь в базовый класс деструктор и сразу все станет понятно.Ну и да, у тебя очень опасный код: сначала создается объект базового класса веришь ты или нет, а потом ты с помощью SZM все внутренности нахер затираешь. И если в базовом классе происходит какая-либо аллокация, то можно таким образом утечку получить.
Помогите нубу.Пишу бинарное дерево поиска. У вершины есть ключ и указатели на потомков. Дерево строится динамически, понятное дело. Дерево поддерживает поиска потомка по ключу: Tree& find(K key). Далее, хочу написать метод Tree& pop(Tree& node), который выкидывает node из дерева, ставит ему потомков null и возвращает ссылку на него. У меня такое ощущение, что, если я просто сделаю return node, то при запуске чего-то типа t.insert(узел с ключом i); t.pop(t.find(i)); у меня произойдёт утечка памяти. Я прав? Как это обойти? Как это вообще работает?
>>1420816>GCCМожешь убирать свое говно. Я тебе русским языком написал, что листинг я смотрел и дебажил 3 раза. Там все работает так, как мне нужно.Ты даже не вник в суть задачи и лапшу мне на уши вешаешь, найди первое мое сообщение в которой я описал проблему.
>>1421014>>1420500Боже, ебанутый. Очевидно, если компилятор по дефолту генерирует memset внутри конструктора, то нет там никаких аллокаций и я спокойно могу пихать свою имплементацию. У тебя с логикой проблемы? Почему я должен слушать Васянов с двача, если я все перепроверил по 100 раз и на стеке аналогичное решение? Или ты тот самый тролль который поселился в треде с начала лета и скорее всего ебаный школьник и всех шлет нахуй?
>>1421020Сука, что ты несёшь, еб твою мать. Какой нахуй memset внутри конструктора, ебливая ты зараза.> я все перепроверил по 100 разПроверялка не выросла видимо.https://www.viva64.com/ru/examples/v603/Ты ничтожество, бесполезная биомасса, у тебя никогда ничего не получится, лучше сразу иди в грузчики, не порти чужой говнокод
>>1421039Как же приятно смотреть на то, как бомбанутый школьник мне 2 день с порванной жопой и пеной у рта пытается доказать что-то, хотя я уже давным давно написал код, который полностью правильно работает и удовлетворяет мои требования. Eye candy.
>>1421039> Какой нахуй memset внутри конструктора, ебливая ты заразаСтруктуры объектов затираются нулями, чтобы мусора не было.
https://ideone.com/5TVhc3Как подружить stl с int[4]? Второй блок не компилируется из-за ошибках в шаблонах, если расскомментировать sort. Не вижу никаких концептуальных проблем, структура аналогичного содержания хорошо себя чувствует.
Всем времени суток.Пытаюсь разобраться с winsock, написал простейшую прогу для скачивания страницы, но притэтом она ИСКАЖАЕТ некоторые символы. Это так и задумано тли баг? Как исправить?Делаю как там: https://stackoverflow.com/questions/31777941/winsock-recv-giving-gibberish-mixed-with-useful-htmlРешение которое ему дали, естественно, применил.
>>1422018Что значит искажает? Покажи как в оригинале и твой результат.Какая-нибудь ебола с кодировкой наверное.
>>1422031Отдельные символы заменяются мусором, каждый раз разные. Почти весь текст html-странрцы загружается верно кроме них. Мусор это нечитаемые символы которые отображаются в браузере как <?>b32<?>. b32 - может быть любое случайное число в hex, необязательно это. <?> это чёрный ромб с вопросительным знаком в браузере, на мэйлаче я вообще хз, будет ли он отображаться, скорее всего нет.
Сап двач. Есть одна программа. Она на каком то моменте просто перестает что либо выводить в консоль, даже значения переменных над которыми выполняются действия. Программа не может работать настолько долго. Навереное попала в бесконечный цикл. Можно ли средствами visual studio понять в каком месте зарылось колесо сансары?
>>1422137Я понял в чем ошибка. Как сбросить счетчик строк в объекте класса ofstream. Мне нужно чтобы в какой то момент объект начал считывать файлы с первой строки, а не с предыдущей
Какая функция в Qt каждый раз при обращении возвращает рандомное число? Пробовал QRandomGenerator::global()->bounded() и QRandomGenerator::system()->bounded(), одно и то же, генерируется один раз на запуск программы.
>>1422158Я насчет qt хз. C++ вроде не имеет хорошего рандомизатора, поэтому я бы на твоем месте взял псевдослучайные данные из памяти или по времени нажатия на кнопку в силлисекундах
>>1422162Там есть QRandomGenerator::system() который юзает системный рандомайзер.>>1422158Так ты seed задай от времени, например.
>>1422162>C++ вроде не имеет хорошего рандомизаторав stl же есть 6 различных генераторов и что-то около 20 распределений.
>>1422175>always uses the facilities provided by the operating system to generate random numbers. The system facilities are considered to be cryptographically safe on at least the following operating systems: Apple OSes (Darwin), BSDs, Linux, Windows. That may also be the case on other operating systems.
>>1422173А как ограничить? Мне надо bounded(). Попробовал написать друг за дружкой QRandomGenerator::global()->seed(QDateTime::currentMSecsSinceEpoch());int a = QRandomGenerator::global()->bounded(360);но стало выбивать ошибку при компиляции.
Можно ли посмотреть значение переменной в момент выполнения программы без breakpoint'ов? Вот программа выполняется, я ее на паузу ставлю и смотрю что нужно. Такое возможно?
Вот выполняется у меня программа. Почему она не грузит ни один параметр компа на 100%? Больше всего цп. Всего 70, 30 из которых моя программа. Приоритер высокий. Реального времени боюсь ставить, а то потом комп зависнет.
>>1422219> Break all? Она точно ничего не сломает?))А что она по-твоему может сломать?>>1422198В студии можно бряк поставить, который вместо остановки будет в консоль выводить то, что тебе нужно. Или вручную чем-то вроде printf>>1422201Выше уже это обсуждали, в сраче про qt
>>1422222А программа многопоточная? У меня виснет на отличненько, например.И занять вообще всю память тоже можно без особых проблем, тогда остальные программы сходят с ума, окна перестают корректно отображать и всё в таком роде.
>>1422230> А программа многопоточная?Нет, если только компилятор ничего за меня не сделал. НО если в диспетчере задач поставить сходство на одно ядро то оно начинает нагружаться по максимуму (обычно нет), а остальные чуть меньше грузит> И занять вообще всю память2 мб весит.
>>1422234>НетНу вот потому и не лагает.Могу предположить, что без "сходства" планировщик поочерёдно перекидывает её на разные ядра, и это выглядит как неполная загрузка нескольких ядер.
>>1422107Одна буква, например, "з". Каждый раз резная. Англоязычные сайты грузятся без багов, вроде бы.
Поясните мне, почему во втором варианте вывода вместо содержимого файла вываливается какой-то мусор? http://coliru.stacked-crooked.com/a/237e0f7279c8fb86
>>1422249Код как там, только с испраалением которое ему там же предложили:https://stackoverflow.com/questions/31777941/winsock-recv-giving-gibberish-mixed-with-useful-html
немного шарю в pb и asm, в С++ нет. Подскажите, что ждёт от меня Студия №15: В строке:if defined(IDA_SDK_VERSION) || PIN_BUILD_NUMBER >= 76991пишет ошибку: Ошибка C1017 недопустимое константное выражение целого типа То есть, вместо || надо And?
>>1422299code.str() возвращает временный объект std::string. В следующей строке кода он уже уничтожен и твой указатель - не валидный.
Нужна работа с пикчами. Выбрал opencv.Обрезка, уменьшение, обесцвечивание, контраст - запилил. Теперь нужно либо сравнить 2 пикчи, либо узнать, что одна из них полностью белая/пустая пикрил.Хотел сначала в сторону гистограммы смотреть, но эта оказалась весьма непонятная часть.Может кто что посоветовать? Или курс "запили то же самое без абстракций и либ".
>>1422313>||Это логическое ИЛИ. && это И.Попробуйif (defined(IDA_SDK_VERSION) || PIN_BUILD_NUMBER >= 76991)если я правильно понял то, что тебе требуется.
>>1422550>Или курс "запили то же самое без абстракций и либ"Вот это. Белый фон (и любой другой однотонный) делается очень просто, схожесть тоже не слишком сложно, если картинки совмещены. Если же там вращения, светофильтры, смещения и отзеркаливания, то можно сразу пристрелиться.Не знаю зачем тебе opencv для того что ты перечислил, он для задач посерьёзнее вроде бы - поиск линий/кругов на картинке и всё в таком роде.
Аноны, как писать 3d-графику?Решил научиться использовать SDL2. С 2d все ясно, а как с 3d? Там есть определенные классы и методы для этого, или же мне надо научиться работать с проекциями и прочей математической магией?
>>1422624Около часа назад вновь пытался осилить bmp/png и после пропала всякая мотивация.Изображения совмещены.Попробую хоть Magick++, пока окончательно не уплыл.
>>1422645>пытался осилить bmp/pngА, да, форматы долбанутые, эн/декодер вручную конечно не стоит писать, если ты в самом деле пытался это сделать. Даже в простейшем bmp рутина унылая с разными битовыми форматами. Когда-то давно для загрузки файлов (текстур для opengl) я DevIL/OpenIL использовал и он нормально работал, сейчас под виндой вовсе через gdi+ загружаю, а это совсем дно.Я имел ввиду, если тебе нужно массив пикселей обрабатывать на уровне поиска фона/сравнения совмещённых картинок, то вряд ли тут нужны библиотеки для обработки массивов пикселей.А форматы очень сложные, это немного другая область и нет никакого смысла их писать, для них совершенно точно почти на 100% нужна либа - форматы то одни на всех, какой-то специфический вряд ли потребуется, в отличие от специфической обработки пикселей.
>>1422635>или же мне надо научиться работать с проекциями и прочей математической магией? Вот это. Не знаю насчёт sdl, но в glu были наглядные человеческие функции, по типу разместить камеру в таких-то координатах, с таким-то направлением и таким-то углом обзора. То есть если нужен схематичный вид в виде линий и точек, то можно и не вникать - но если будешь писать шейдеры с отражениями и тени, отсекать невидимые объекты с помощью объёмных деревьев, делать какие-то костные анимации, то тут совсем никак без проекций и другой линейной алгебры.
>>1422581>>1422628Спасибо огромное! Вы оба правы. Всё скомпилилось!!!п.с. какое-же всё-таки дерьмецо эта Студия - никакой совместимости! Разные СДК, компили, заголовки... Да просто держать три версии студий (13, 15 и 17) чтобы компилить "почти без проблем" это более сотни гигов диска надо!
Аноны, есть класс QWidget в Qt, и внутри него есть всякие функции и глобальные переменные. Я хочу некоторые функции, типа открытия файлов, вынести за пределы кувиджета в отдельные хедеры, но эти функции привязаны к некоторым глобальным переменным. Например, открытие файла привязано к названию файла, ширине файла, длине файла (это картинка), глобальным мапам с пикселями.Что делать, как можно решить проблему? Перечислять все глобальные переменные в параметрах функции очень не хочется.
>>1422661Один знакомый наоборот клялся, что это как семки щёлкать :cСобственно, перешёл за пару часов на magick++ и реализовал прошлое и новое, но вновь уткнулся в стену, ибо встал вопрос о поиске по темплейту, чего API не предусматривает.
>>1422845То, что решит твою задачу без лишнего геморроя, при условии что ты эту задачу сформулируешь.
>>1422849Угу, именно поэтому во всём мире полтора видеоэнкодера vp9, да и к изображениям по три с половиной, который скорее всего копируют какую-нибудь открытую библиотеку в большинстве своём.Там же в коде все жадные алгоритмы сжатия, двумерные фурье-преобразования, особенности человеческого зрения и так далее. Это нужно быть очень крутым спецом (и иметь кучу информации), чтобы написать это на достойном уровне или ещё большей занудой, чтобы вычитывать спецификации/документации и ремейкать то же самое в своём коде.Что такое поиск по темплейту?
>>1422840>Я хочу некоторые функции, типа открытия файлов, вынести за пределы кувиджета Ты какой-то наркоман, откуда там открытие файлов?Асло пилите уже перекат.
>>1422859Ну, благо такие люди есть и пишутся новые кодеры для какого-нибудь AV1.>Что такое поиск по темплейту? Поиск по шаблону, но обошёл это наведением курсора самостоятельно.Бтв, сырой проект закончен, без кроссплатформенности и с уймой костылей.
>>1422860Ты картинку в raw формате по другому не откроешь. Даже в фотошопе перед ее открытием запрашивается ширина, высота, битность и т.д.
>>1422963> , откуда там открытие файлов?У меня программа, которая является экземпляром класса QWidget. Функцию открытия файла я сам писал. Но так как я ее часто использую при создании следующих программ, я решил, что проще будет вынести ее в отдельный файл и подсоединять потом, когда понадобится.