Это копия, сохраненная 27 августа 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
речь именно про процессы, про треды речи не идет.
В плюсах вообще не определено понятие процесса. Всё, что с ними связано, делается только через апи платформы.
Это будет по разному в каждой реализации. В линуксе наверно да (если форкать), в виндоусе вряд ли.
По хорошему, лучше на это не расчитывать и делать самому через системное АПИ.
немудрено, но почему богомерзкая? Как по мне, удобнее инита в разы. Сисадмины явно не согласятся с твоим высказыванием (я не сисадмин, если что)
Где можно удобно, без лишних тонн текста изучить синтаксис языка?
Хуй знает как на этом говнолинуксе, на винде спокойно дрова пишу на плюсах. Офк с некоторыми ограничениями(нет исключений). Даже гипервизоры можно писать на плюсах.
Страуструпп вроде сразу на первых страницах весь синтаксис вываливает. Я правда название не помню. У него есть одна книга для новичков - тебе другую.
Одного способа нет, есть несколько расхожих вариантов, выбери один и используй везде.
Спасибо.
Почему сейчас нет ни одной более или менее известной ОС, ядро которой написано полностью (или хотя бы частично) на плюсах?
Вообще, если мне хочется в образовательных целях написать ядро ОСи на крестах - это норм или хуйня затея?
Я придерживаюсь гугловскому стилю https://google.github.io/styleguide/cppguide.html . Приватные с var_ публичные просто var.
>>68771
Это вообще хуйня в эпоху ИДЕ. Всякие m_pszName это пиздец.
this
Твой бинарь зависит от кутэшных либ, линковка с которыми может быть динамической (твои длл) или статической(не будет длл, но сам экзешник будет весить столько же). Без них никак.
Мне б такое на месяцок, пишу говно, не заучив теорию
Anxiety? Я тоже прочитал книгу но писать ничего не могу.
m_hueta
ебантяйство
Сет это дерево поиска. Там не бинарный поиск используется, а обход дерева.
Могу линкер gold припомнить.
это вообще не то, лол.
>>68535
В С++ такой хуйни вообще нету в стандарте, как и понятия процесса.
Если ты в винде - то смотри на платформенный https://docs.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-createmutexa и https://docs.microsoft.com/en-us/windows/win32/sync/using-named-objects
в LOONIXe обязано быть что-то аналогичное.
> больше сотни мб весят
Скорее всего ты взял дебаг версии библиотек, собранные для mingw. У меня релизные core+gui+widgets для msvc весят совсем хуйню
Может и не плохо, но де-факто стандартный компилятор под Винду - это msvc. В QT просто по какой-то причине не могут вырезать символы в отдельный файл, как это происходит с pdb под msvc. Наверное, чтобы не ебать ньюфагам мозг со склеиванием библиотеки и символов, хотя я не уверен
При всей моей безумной любви к микрософту - пока ты ньюфаг и хочешь пердолить куте - пердоль кутекреатор + мингв. Оно попроще.
> m_pszName
Никто ж тебя не заставляет всю венгерскую нотацию тащить с собой. Ну и по поводу ИДэЕ - если набрать "m_", то автодополнение выведет только члены класса, а если набирать имя, у которого в конце "_", то оно тебе весь скоуп выплюнет, так что тут плюс в сторону "m_". Ну и субъективно ревьювить легче такой код, периферическое зрение видит приставку и ты уже заранее знаешь, что тут идёт обращение к члену класса.
my_string.substr(0, my_string.find('\0', 0));
Не работает
Ах, да, спасибо, просто спиздил не совсем рабочий пример не подумав.
Есть стример на твиче, который пишет полноценный гипервизор за 3 12-ти часовых стрима что за хуйню ты высрал про всю жизнь, пчел? Цель не написать конкурента винде или Линуксу.
Так гипервизор просто хостит ОС, ему не нужно дохуя разных фишек для работы там с файлами или пользователем. По факту для простейшего гипервизора нужно просто реализовать несколько затычек под vmexit'ы и все. Если это гипервизор 2 типо то можно сразу под виндой запусктать и юзать уже готовые функции винды. Если же первого типа то да, тут сильнее потеть придется.
std::string a = "Phöenix";
std::cout << a << std::endl;
std::string a = u8"Phöenix";
std::cout << a << std::endl;
std::wstring a = L"Phöenix";
std::wcout << a << std::endl;
Потому что это никому не нужно. Кто сейчас вообще ОС пишет?
Ну ты можешь потратить время какое нибудь микроядро написать, если скучно. в миниксе вроде около 10к строк кода, как раз тебе на пару лет работы
Ещё один пал в неравном бою с консолью венды.
Почему оп пик такой ахуенный?
Потому что это скрин игры пакман.
Потому что шрифт без серифов.
для гипервизора первого типа нужно писать отдельное ядро, ибо гипервизор первого типа не запускается в контексте ОС, он имеет прямой, неабстрагированный доступ к железу. Да, можно пропустить овердохуя фич обычной ОС, конечно же, но основы разработки ядра ОС лежат в основе разработки гипервизора первого типа. Что можешь посоветовать почитать про них?
У меня и без книжки хватило
Надо читать документацию к нему, а еще лучше отдельную книгу.
По первому типу не скажу, я их не трогал никогда, но из функционала ОС во втором типе дергается обычно только выделение памяти и переключение между процессорами. В теории нужно просто реализовать свой аллокатор + переключение процессоров и все.
Часто. Весь userspace где нужна скорость.
Set - не массив.
Я понимаю, что это сокращение от float, но смысл? Я же до этого указываю тип.
1. Нужные твои зависимости - те иодули, что прописаны в .pro в CONFIG += qt widgets network.
2. Компиль релизную версию, нажав слева с молоточком.
3. Берешь дллки - свой экзешник кладешь рядом с длл qt, которые копируешь из папки, типа qt/msvc2017/, путь точно не помню. Там лежат все-все-все дллки, которые могут использоваться. Тебе нужны qtcore, qtwidgets без "d" (это дебажные длл), и типа того. Можешь запускать экзешник до победного, ошибка скажет, чего не хватает. Простейший проект будет весить мегабайта два. А, ещё c++ либы для винды нужны, это которые ставятся вместе с играми, если кому-то свою программу отдашь.
2.1. В qt есть специальная утилита для сборки проекта - windeployqt, лежит где-то в папке с qt
3.1. Есть вариант статической сборки, чтобы вышел только один exe файл без зависимостей. Для этого нужно скачать исходники qt и начать собирать, указав ключ типа -статик, как-то так
Я прочитал. Но там просто половина не объяснена. Я понял зачем шейдеры, но как их писать пока нет. Там следующая глава сразу про шейдеры. Поэтому думаю не страшно, если сейчас просто прочитаю, не пытачсь понять всё
Если кому интересно, то это третья задача отсюда
https://vk.com/doc261868807_514613880?hash=21df42b17a0d8f40f9&dl=ac75643e6c2b21ee6f
CLion
> Означает ли
Нихуя не означает, просто ввернули хипстерское словцо. Возможно на английском это звучало чуть более казульно - они просто хотели сказать что функции реализуются как методамы класса, а не просто оставляешь их неприкаянными в глобальном неймспейсе.
Двачую
Контруктор класса Operations должен принимать в себя объект реализующий интерфейс IComparer.
Реализуешь этот интерфейс у класса ShapeComparer с необходимыми методами, которые будут принимать объекты класса Shape и возвращать булевое значение.
Класс Operations будет иметь три перечисленных метода, которые возвращают булево значение, принимают объекты IOperable (нужно реализовать его у класса Shape), и вызывают методы переданного через конструктор объекта реализующего интерфейс IComparer.
В итоге создаешь класс Operations, передаешь ему класс ShapeComparer, и вызываешь метод передавая ему два объекта реализующих интерфейс IOperable, в данном случае два класса Shape.
> а не просто оставляешь их неприкаянными в глобальном неймспейсе
Так сделай неймспейк, дурик.
Переложить из одного глобального пространства в другое? А ты не очень умный, да?
Да не, просто вроде написал прогу для решения задачи, в итоге не работает, не понимаю почему. Поможешь, анон?
Понял, спасибо
Работаю в vs code, очень удобно.
Ну и в чем проблема то? Читаешь построчно, сплитиш по пробелам, заполняешь массив структур хозяйств и работаешь с ним.
Я вот только что кидал код,какого то хера удалили, я вроде все прошерстил, и до сих пор не понимаю, что не так. Проблемы с выводом, и программа не доходит до сортировки.
Black Sabbath
>ShapeComparer
Нихуя не понял. Зачем создавать ShapeComparer? Об этом не говорится в моей методичке.
>интерфейс IComparer
И что ещё за "интерфейс"? В той же методичке это слово фигурирует несколько дальше этой лабы с инкостыляциями.
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
glew32s.lib(glew.obj) : warning LNK4099: PDB 'vc120.pdb' was not found with 'glew32s.lib(glew.obj)' or at 'C:\Users...\vc120.pdb'; linking object as if no debug info
Тогда под инкапсуляцией имелось в виду просто нахождение методов в классе и только. Они даже могут быть public.
1. Обход дерева (там кода 10 строчек) - всрался.
2. Вопрос по битовые выравнивания структур - всрался.
Тут уже начали угорать и спросили его виртуальный конструктор и это мудило попалось, лол. ВИРТУАЛЬНЫЙ КОНСТРУКТОР
Эта порвань просто дропнула разговор.
Вы бы слышали как этот СИНЬЕР рассказывал про виртуальнаый конструктор, ахахах, вот это даунитос блять.
Инкапсуляция означает сокрытие деталей реализации за интерфейсом. Т.е. пользователи класса дергают методы и не парятся по поводу того что у него там внутре.
1. Рекурсивно вызвать функцию обхода для левого и правого сына?
2. Хуй знает что за битовые выравнивания, знаю только про байтовые через alignas. Если это про битовые поля, то очевидно что если количество бит не хватает до целого байта то оно выравнивается к ближайшему байту.
Я теперь сеньор?
ну у нас шарага с разработками на гос-во, мы не яндекс конечно, но
синьерам платят от 130. Многие думаю если гос-шляпа можно вообще нихуя ни делать и не знать. Один был сильный кандидат, был в резюме дойче, так он так и сказал, что планирует отдохнуть годик
wstring?
Может быть, что не хватает непрерывного участка в оперативной памяти, попробуй list вместо vector
у меня где-то 50 лямов строк, каждая по 100 байт
все на хуй зависает непонятно где, пробовал лист, такая же хуйня, 14 лямов читает.
в госконтору джунами берут только когда толстожопая дирекция какого-нибудь пиздюка пристроит. К нам джуны если и приходят то если не дауничи через год съебывают куда получше.
У меня баттхерт по другому поводу был
Почему кто-то такие вопросы сеньорам задаёт, а кто-то ебаному студенту на место джуна?
потому что в одном случае ты устраиваешься в норм. контору, а во втором в госпарашу. Через 5 лет в госконторе ты деградируешь в край и пузырьком не сможешь отсортировать. У нас синьеры иногда ходят, их никуда не берут, в одном месте спрашивали НА СИНЬЕРА НА 110 т.р.. Держитесь за стулья ВЫВЕСТИ ВСЕ ЧИСЛА КОТОРЫЕ ДЕЛЯТСЯ НА 5 и 3 ИЗ МАССИВА ЧИСЕЛ ОТ 1 ДО 100
Если зависает в цикле - проверь условие
Хотя я сам не так давно хотел считать файл в байтовый вектор, на маленьких файлах нормально работало все
На файлах под 2 гб - вылетало с ошибкой
Пофиксил разбиением файла на части размером const BUFFER_SIZE
По-другому не знаю как
И говорят две третьих кандидатов не могу на бумажке написать этот алгоритм БЕЗ ОШИБОК.
Пизда, что за место такое ахуенно?
мне главное не задачу решить, а понять че за хуйня. Как вообще в си++ определить что push_back в лист не пройдет?
бля) не ЕПАМ, но контора одна из топовых госшараг, там еще финальное собеседование с директором этой шараги.
я не умею исключениями пользоваться, раньше писал код для критических систем, там были только коды возврата. Как-нибудь без исключений можно и какое исключение генерит push_back и генерит ли вообще его?
https://habr.com/ru/post/497114/
Крестоблядь думала, что весь ее опыт как на костылях и в муках писать какую-нибудь хуйню и затем месяцами ее отлаживать это нечто сродни священным знаниям, а оказалось рыночку это на хуй не нужно и проще на какой-нибудь джаве заебашить и тупо кол-во нод нарастить чем дрочить си++ с бустами и всякими сетевыми заморочками. Си++ блядь осознало, что 17 лет чистила говно вилкой в то время когда парни посмекалистей пилилили все на джавах и весело проводили время с тянами. Уже и страуструп начал подвывать и майерс перекатился в столяры, а порвань разная все на си++ в России пытается самоутвердиться. Помню на рсдн был эпичный тред как интел вышвырнуло РэндД пинком под зад и разработчики компиляторов пошли осваивать ДжиЭС
ДС) епта братюнь, тут вообще параллельная реальность, в одну контору берут после джава раша на 100 т.р. джунов с годом работы и тут же набирают с++ на 120 с 5 годами.
Я не верю, что есть СЕНИОРЫ с 110к.
Я перекатился в ДС на хуевого мидла на 120к 5 лет назад с полугодами опыта. А тут СЕНИОР 110к.
Еб твою мать, ты что, не можешь восемь строчек написать? Четыре из них - кривые скобки.
> какое исключение генерит push_back
Ну пиздец, дожили. Про cppreference не слышал? В шапке ссылка есть.
Читаю принципы и практика страуструпа.
Ебать пишет он вроде годные вещи, но примеры просто дебилизм.
Жаль, Стефан Кочан не родил учебника по С++
По твоей теме поищи пикрил или Макса Шлее или Жасмин Бланшет.(но она боян)
Плюс есть видеоуроки.
Touché
По-моему все нормальные С/C++ книги рассчитаны на уже пропердоленных опытом юзверов
Освоил ку тэ вообще до си++. Выкидывай его на хуй, ща если и нужно что то это STL + Boost
любой. можно Qt, можно кодеблокс можно dev-Cpp можно Geany
>>70728
1. используете в продакшене?
2. редкая возможность
https://tproger.ru/translations/art-of-structure-packing/
3.https://www.geeksforgeeks.org/advanced-c-virtual-constructor/
>>70926
ну как сказать, не всегда. есть совсем для маленьких, а есть разной степени упоротости учебники. вот есть Айвор хортон С++ 17 вполне себе нормальный учебник. или Липпман базовый курс или на худой конец Прата.
>>70931
Может, ты и прав. Но мне надо поддерживать код на кьюте, потому пока его учу. а так, да, буду изучать их.
> Через 5 лет в госконторе ты деградируешь в край и пузырьком не сможешь отсортировать
Не суди по себе
да там нечего особо учить, сигналы-слоты. Вот и вся концепция. Еще модели разные навороченная тема (MVC). Хотя я Qt уже лет 10 использую, очень удобно, жаль мало кому нужно.
я только вкатываюсь
Имею опыт на питоне всякие консольные хуевины писать для автоматизации рутинной работы.
А сейчас надо поддерживать приложухи.
Вспоминаю короч С++, учил его в универе и забыл.
Вот решил короче ту зеленую книгу читать, гусей-лебедей страуструпа и по мелочи разное.
Я хз. может, есть смысл свитчнуться на более умные книги.
в универе препод советовал следующий набор для С++
1. Дейтел и Дейтел
2. Гради Буч - объектно-ориентированный анализ
3. Алгоритмы + структуры данных = программы. Вирта
НУ и высший пилотаж - трехтомник Кнута.
Еще Лафоре ООП на С++ и Павловскую.
Все книги говно.
Кнут - говно, совершенно непонятно, что и как использовать.
Гради Буч - говно оторванное от жизни, гладко было на бумаге.
Дейтел - х.з. чето для нубасов, не читал.
Вирт - читал что-то, вирт предвосхитил всех петушей, очень грамотные с системной точки зрения книга.
Я бы рекомендовал
1. Эккель - 1 том. Сложная хуйня, однозначно книга ДЛЯ ПРОГРАММИСТОВ, а не вкатышей. После нее поймешь зачем нужны шаблоны и будешь их любить(что важно).
2. Аммерааль - познакомишься с STL, поймешь почему это действительно удобно и стоит этим пользоваться.
Что бы на работу устроиться эти книги совершенно не помогут, если нужно вкатиться то это
Майерс, Саттер.
вообще если ты кун, может быть давай договоримся, ты шли мне фото попки и члена,а я тебе буду давать уроки си++.
> 2. редкая возможность
Я сейчас правильно понял, ты фабрику назвал виртуальным конструктором?
Благодарю за Аммерааля и Эккеля.
Я Эккеля скачал оба тома, однако не читал.
Знач, буду её читать.
>>70986
не, не правильно.
Там же в статье вроде написано:
Can we make a class constructor virtual in C++ to create polymorphic objects? No. C++ being static typed (the purpose of RTTI is different) language, it is meaningless to the C++ compiler to create an object polymorphically. The compiler must be aware of the class type to create the object.
Ну а дальше вроде фабрика описывается.
я про выравнивание структур.
>. Аммерааль - познакомишься с STL
Гугл говорит, что это книжка 1999 года. STL 1999 года - это серьёзно?
Это лицо объекта, один из инструментов полиморфизма. На полиморфизме основывается принцип подстановки лисков.
Нет, инкапсуляция значит сокрытие чего-либо в чём то. Атрибуты вида private, например, тоже часть инкапсуляции. Если у тебя конструктор класса принимает другой класс и работает с его методами, то это тоже называется инкапсуляцией. А интерфейс это просто инструмент для реализации протокола.
Да похуй. Она учит как нужно использовать итеараторы, алгоритмы, функторы. Я проходил супер современные курсы по си++ и то хуево все понял из СТЛ, а тут все по местам ставит. Смотри, вирт написал про модульность, переменные состояния и т.д., хуй знает сколько лет назад и занешь сколько программистов из моего окружения осознали это? Никто. Зато гонятся за всеми новомодными фишками стандарта. Я тебе скажу больше, теории автоматов вообще сто лет в обед, а кто умеет ее использовать, что бы справиться с какой-нибудь злоебучей асинхронщиной? Только в топовых компаниях единицы и так блять везде.
Хотя я тут наверное пропизделся, вроде есть микросервисная архитектура, может это и есть то что вирт имел в виду под модулями. В программисты вообще часто идут туповатые самонадеянные люди у кого не сложилось с наукой или специальность невостребованна в России. Тут со вкатышами даже проще, вкатыши не считают себя умней других и с легкостью усваивают сложные концепции, в то время как какой-нибудь пидор из эмбедеда который и паять может и в радиоволнах рубит и прошивку может для трех семейств микроконтроллеров написать не может полгода гит освоить и даже не врубается зачем он нужен, или как препод из уровня вуза типа МФЮА по программированию не может в срок ПО написать.
>Да похуй. Она учит как нужно использовать итеараторы, алгоритмы, функторы.
Да это во многих языках есть, вся теория одинаковая. Все структуры данных, все эти итераторы, всё есть. Зачем ещё раз учить? А вот специфика реализации везде разная.
не все знают глубоко несколько языков, я вот на Php писал пару лет и похуй было и на итераторы и на функторы
Я вот и слова такого, "функтуры", практически не знаю, хотя callable-объектами активно пользуюсь. По-моему этот термин просто не прижился и не используется.
Мне кажется, что для современных динамических языков все эти конструкции уже давно норма, всё уже давно в массах. Конечно, это не про тех, кто изучает первый язык программирования.
А вот именно STL довольно уникальна и специфична именно для C++, хочется какой-нибудь материал, чтобы въехать в STL из других языков. Не чтобы на C++ уходить, а чтобы просто уметь.
Лол. Если ты не программируешь хотя бы два часа после работы, то ты сам себя заносишь в списки на сокращение
например на вот таких
i = 1;
printf("%d,%d", i++, i++);
Что выведет?(такую задачу у меня не спрашивали - это с хабра одной компании их вопрос на собесе)
или уже из реального:
- почему нельзя использовать memset?
- че блядь? всегда писал
- Да? мы вам перезвоним
на https://en.cppreference.com/w/ и https://www.cplusplus.com/reference/ больше практического, нюансов я там пока не увидел
Пробовал в черновик стандарта С++... но это такой шлак (и любителям потешить чсв - даже сам коммитет заявляет что стандарт не для чтения и тем более не для обучения. это юридический документ для спецов делающих компиляторы)
Хорошо вас там надрессировали.
А так читай Скотта Майерса.
>printf("%d,%d", i++, i++);
>Что выведет?
Неизвестно
>- почему нельзя использовать memset?
Связано с временем жизни объектов, всякими заморочками в стандарте. Компилятор может решить что то, что ты заполнил мемсетом, на самом деле не существует (потому что нормальным образом эти переменные не присваивались), и соптимизировать их нахуй.
Обычная ситуация - есть массив векторов (геометрических, тех которые xyz), тебе нужно его обнулить.
С fill у тебя будет вызываться конструктор для каждого вектора. Оно конечно заинлайнится и соптимизируется, но будет в несколько раз медленнее мемсета, я проверял.
>врёти
Мирок сельского дурачка порвался.
Инкапсуляыция это изоляция функций и переменных, именно это делают неймспейсы.
скажу тебе по секрету - существуют анонимные неймспейсы, они локальные, в пределах одного юнита
Это уже школьный максимализм
Дебил обосрался и решил включить дебила для маскировки. Маскировка/10
Ну братюнь, вольному воля, попробуй курс Кэйт Грегори с Pluralsight .com называется Beautifull stl alghoritms Как-то так. Аккаунт там стоит 30$ в месяц, но оно того стоит, действительно клево.
это мартышкин труд через такое говно к собесам прорываться, на мой взгляд это вообще унижает настоящего инженера, изучать непонятную шизу.
В твоем примере это классический с++ прием для унижения нубла. Так делать нельзя, а именно в одном выражении дважды выполнять переменной присваивание.
А почему ты использовал memset? Кстати. Я вот с утра проснулся не очень соображаю, расскажи, что была за задача и почему memset&
он лежит на торрентах, првада нет английских субтитров. Без субтитров совсем мне сложно было.
Ага. Я тоже все время с этой хуйни ору. Начинают что-то объяснять тут хуяк и к устройству стека или какую-нибудь ассемблерную вставку влепят, а книга типа для новичков.
> . Вопрос по битовые выравнивания структур - всрался.
Прочел 2 толстенные книги и про это слышу впервые. Ну теперь хоть знать буду.
> Липпман базовый курс
Вот это к слову охуенный учебник. Очень все хорошо рассказано, и рассмотрено почти все, что может понадобиться джуну. Но нет многопоточности, что удивило. Только задачи там легкие, надо искать в других местах.
> настоящего инженера, изучать непонятную шизу.
Почему тогда программисты продолжают изучать С++?
инженеры ничего не решают, есть легаси на ++, есть менеджеры
Далеко не везде питоны и жаваскрипты
Стабильность. Можно выучить язык, устроиться на работу и больше нихуя не изучать. кроме тонн библиотек, но это хуйня
void CustomAreaTool::floodFill(QPoint p)
{
QVector<QPoint> stack;
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, -1, 0, 1};
stack.prepend(p);
while(!stack.isEmpty())
{
QPoint p0 = stack.takeFirst();
QColor c0 = selectionMask.pixel(p0.x(), p0.y());
if (c0 == Qt::black)
{
QPen pen(Qt::white);
QPainter painter(&selectionMask);
painter.setPen(pen);
painter.drawPoint(p0);
}
for (int i = 0; i < 4; i ++)
{
QPoint p1 = QPoint(p0.x() + dx, p0.y() + dy);
QColor c1 = selectionMask.pixel(p1.x(), p1.y());
if (p1.x() > 0 && p1.x() <= selectionMask.width() && p1.y() > 0 && p1.y() <= selectionMask.height() && c1 != Qt::white)
{
stack.prepend(p1);
}
}
}
view->setCanvas(QPixmap::fromImage(selectionMask));
}
Когда запускаю, в выводе пишет пикрил.
Вопрос: хули он от меня хочет, и почему в другом месте такой же код с таким же применением QPainter спокойно работает?
void CustomAreaTool::floodFill(QPoint p)
{
QVector<QPoint> stack;
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, -1, 0, 1};
stack.prepend(p);
while(!stack.isEmpty())
{
QPoint p0 = stack.takeFirst();
QColor c0 = selectionMask.pixel(p0.x(), p0.y());
if (c0 == Qt::black)
{
QPen pen(Qt::white);
QPainter painter(&selectionMask);
painter.setPen(pen);
painter.drawPoint(p0);
}
for (int i = 0; i < 4; i ++)
{
QPoint p1 = QPoint(p0.x() + dx, p0.y() + dy);
QColor c1 = selectionMask.pixel(p1.x(), p1.y());
if (p1.x() > 0 && p1.x() <= selectionMask.width() && p1.y() > 0 && p1.y() <= selectionMask.height() && c1 != Qt::white)
{
stack.prepend(p1);
}
}
}
view->setCanvas(QPixmap::fromImage(selectionMask));
}
Когда запускаю, в выводе пишет пикрил.
Вопрос: хули он от меня хочет, и почему в другом месте такой же код с таким же применением QPainter спокойно работает?
Собсна назрел вопрос. Вчера в рекомендах на ютубе вылез стрим(лекция) Тимофея Хирьянова про алгоритмы и структуры данных на плюсах. Кто нибудь пытался смотреть и если да, то насколько это юзфул?
Экшели сам смотреть пытался, вроде чел как лектор довольно харизматичный, по крайней мере не скучно слушать.
Мне смысл слов понятен, мне непонятно, нахуй он эти слова мне говорит? В другом месте в коде для другого метода все то же самое работает.
Может у тебя, доходя до этого места, код в другом месте продолжает работать и использвовать пейнт девайс.
Да не, не может быть. Код в другом месте - это другой cpp-файл.
Вот например код для кистика.
void BrushTool::paint(QPointF point)
{
QImage image = view->getCanvas()->pixmap().toImage();
QPainter *painter = new QPainter(&image);
QPen pen = QPen(view->getCurrentColor());
painter->setPen(pen);
QPointF shiftedPoint = QPointF(point.x() - brushRadius, point.y() - brushRadius);
QPointF p;
QColor resultColor;
QColor currentColor = view->getCurrentColor();
Pixel pixel;
for (int i = 0; i < brushTemplate->size(); i++)
{
pixel = brushTemplate->at(i);
p = QPoint(shiftedPoint.x() + pixel.getX(), shiftedPoint.y() + pixel.getY());
resultColor = currentColor;
resultColor.setAlpha(pixel.getColor());
pen.setColor(resultColor);
painter->setPen(pen);
painter->drawPoint(p);
}
delete painter;
view->setCanvas(QPixmap::fromImage(image));
}
Не обращай внимание, что здесь указатель на painter, и что он инициализируется не внутри цикла. Пробовал и так, и сяк, не работает нихрена.
Да не, не может быть. Код в другом месте - это другой cpp-файл.
Вот например код для кистика.
void BrushTool::paint(QPointF point)
{
QImage image = view->getCanvas()->pixmap().toImage();
QPainter *painter = new QPainter(&image);
QPen pen = QPen(view->getCurrentColor());
painter->setPen(pen);
QPointF shiftedPoint = QPointF(point.x() - brushRadius, point.y() - brushRadius);
QPointF p;
QColor resultColor;
QColor currentColor = view->getCurrentColor();
Pixel pixel;
for (int i = 0; i < brushTemplate->size(); i++)
{
pixel = brushTemplate->at(i);
p = QPoint(shiftedPoint.x() + pixel.getX(), shiftedPoint.y() + pixel.getY());
resultColor = currentColor;
resultColor.setAlpha(pixel.getColor());
pen.setColor(resultColor);
painter->setPen(pen);
painter->drawPoint(p);
}
delete painter;
view->setCanvas(QPixmap::fromImage(image));
}
Не обращай внимание, что здесь указатель на painter, и что он инициализируется не внутри цикла. Пробовал и так, и сяк, не работает нихрена.
я еще думаю крестовик (если он на крестах ебашит) настолько должен загружать свой мозг всякой хуйней, что у него тупо ресурса не хватает другие технологии осваивать. Сейчас на собеседования спрашивают три темы
1. Знание синтаксиса с++ и всяких его новомодных фишек.
2. Знание библиотек (STL, BOOST)
3. Различные алгоритмические задачки
это просто везде где я был, вот эти три пункта только первый этап на час, потом идет второй.
Крестовик тратит все время на изучения с++ т.к. там бездна просто. Не думаю что какому-нибудь джависту надо знать как там че в ассемблер превращается на уровне машинных кодов, а с++ что бы понимать, что это за хуйня происходит желательно должен понимать всякие стеки, хуеки, как таблицы методов в памяти расположены, когда через регистры передются параметры, а когда через стек и потом хуяк - тебя бросает к бусту, хуяк к стл.
>джависту надо
Там тоже дохера всего специфичного для языка, что надо поддерживать в актуальном состоянии, и что меняется с новой версией языка раз в три года. Больше правда по библиотекам основным.
Беда с этими энтерпрайз-языками, люди тонут в том, чтобы учить стандарты языка, вместо самого программирования логики.
Профи пишут сначала тест, а потом код который его проходит. Потом ты пишешь новый тест и новый код, который его проходит. Конечно, не нужно писать тест для того чтобы проверить, что твоя программа выполняет правильно тривиальную операцию сложения двух целых чисел, но и мудрить тоже сильно не нужно. У тебя должен быть небольшой план из базового функционала, который нужно реализовать. Сначала ты реализуешь его, а уже потом приступаешь к деталям.
В итоге у тебя получается много тестов и качественный код, который эти тесты проходит. Если же хуячить сначала код, а потом пытаться написать тесты, то ты придёшь к тому, что какой-то починив какой-то функционал, ты ломаешь другой, починив другой, ты ломаешь тот что починил раньше, не очень приятная ситуация в общем. Поэтому сначала пиши тесты, потом пиши код, никак иначе.
Не знаю. Вот я недавно вкатился в трудоустройство, уже норм ориентируюсь в проекте, и вроде мечта, самостоятельность, деньги даже откладываю кое-какие, планы строю, но все не то. Никакое потребление контента на досуге не дает стабильного ощущения уюта. Единственное, что воскрешает во мне чувство ламповости бытия, это пытаться что-то учить. SICP, как же охуенно, хосспаде..
Охуеть, ну раз ты ни разу не видел, значит точно не нужно! А как делать ты конечно не скажешь, потому что в твоём ооо рога и копыта всё делают руководствуясь "я так видел, я так чувствую".
В вулканах и опенглях на мой взгляд си-лайк подход, с мемсетами и маппиннгом структур на память. А для цпп лайк подхода это считается небезопасным говном, так как ты нигде никак не описываешь ни байтордер, ни модель памяти. Может у тебя там, я хуй знает, один байт 10 битами описывается.
Та же хрень того токсичного анона с собеседованием, пункт про "битовое" выравнивание структур. Во-первых байтовое, во-вторых это не стандарт, а директивы компилятора через #pragma pack. В третьих, такой подход ожидаемо использовать для супербыстрого парсинга данных: ты описываешь структурой протокол (это поле 2 битика, это 6, тут поле 32 байта), прагмой-пак указываешь, что твою структуру надо выровнять в памяти по байту, затем тебе приходит пакет, лежит в памяти, и ты кастуешь этот кусочек памяти как указатель на твою структуру-протокол. Просто? Да. Быстро? Очень. Но не с++, не абстрактно нихуя, это сишная залупа, когда ты знаешь, как у тебя рабоает память на твоём железном говне. В c++ будь добр парсить как дед по старинке, вычитывая сериализованные данные.
В с++ тем более надо по мудацки кастовать либо через reintrept_cast (лучше говна поесть), либо static_cast<mystuct★>(static_cast<void★>(&buf)), а эта залупа тоже выглядит просто чудовищно.
Или просто обмазаться ифами, как в чистой сишке?
Ну, именно поэтому на крестах не пишут бизнес логику (привет сисярпу и джаве) и не пишут веб, так как там нужен подход аля "хуяк хуяк и в продакшн", что с крестами строго не прокатывает.
С++ это язык для интересной низкоуровневой разработки, для воистину чудовищного хайлоуда, для научно-исследовательских целей, для системных утилит, браузеров, антивирусов, разработки ААА игр и т.п.
Ассерт. Есть ошибки, которые возникают внутри проги изаз криворукости, их в дебаге отыскиваешь ассертами, а в релизе объявляется макрос NDEBUG (вроде), который ассерты все отключает.
Конечно же, если есть какой-то внешний ввод инфы, то ее уже приходится проверять динамически, ифами или ексепшенами.
Я эксепшены ставлю только на запуске программы и например на парсинга файла, в других местах частенько возвращаю еррор_коды, в простейшем случае bool, и ифами анализирую
Если совсем без исключений, то тут только либо монадическая обработка ошибок (optional, variant), либо коды возврата. Но если тебе исключения мешают там, где их вообще не кидается ты ведь не на каждый чих делаешь throw?, то попробуй LTO и обильно подлить noexcept в проблемные места.
Даже пример с стд::вектор - есть метод.at(), а есть оператор[], который нихрна не проверит диапазон, и прога люто крашанется со свистом за выход массива. И это правильно. Если ты строчкой выше инициализовал этот вектор, и цикл делаешь до вектор.сайз(), то зачем что-то усложнять, проверять?
Я пришел к тому, что не стоит весь функционал, особенно скрытый, выдрачивать на проверки, совершенно лишнее. Сделать разовый контроль входных данных, а внутреннюю логику проверить на граничные условия юнит-тестами, и норм
Настал наконец час когда я высру своё первое десктопное приложение на windows с gui. У меня только 1 вопрос. Что сперва сделать? Написать программу на с++ в консольном виде и потом перенсти её в winforms? winapi смотрел там вообще ничего непонятно, годных туториалов не наскрёб, не понятно откуда что там берётся, так что в ну его, начну с простейшего
Ты просто не понимаешь эксепшены.
Начни с гуя, повесь затычки и потихоньку их реализуй
> DWORD WINAPI ThreadFunc(PVOID pvParam)
Поясните с точки зрения языка, как возможно 2 слова перед функцией? Я такого еще не видел
Может быть пустой макрос или calling conversion типо __fastcall там.
DWORD - typedef на uint32, WINAPI - __cdecl по-моему
Не добавят
У меня есть бинарное дерево, я пытаюсь из него сделать дерево Хоффмана, но когда вызываю метод top, то указатель right начинает ссылаться сам на себя
Если писать вручную, то все нормально.
https://pastebin.com/JDAmjFNg
До/После top().
Почему-то меняется значение у указателя right и из-за этого рекурсия бесконечная.
ЧЯДНТ?
Ты посрать-то хоть можешь сходить, или ждёшь, пока это в стандарт добавят?
>В с++ тем более надо по мудацки кастовать либо через reintrept_cast (лучше говна поесть), либо static_cast<mystuct★>(static_cast<void★>(&buf)), а эта залупа тоже выглядит просто чудовищно.
Я тибе больше скажу. reintrept_cast<mystuct★>(&bif) это по определению static_cast<mystuct★>(static_cast<void★>(&buf))
Это странный некродиалект, который нигде почти не используется, т.к. десктоп уже давно шлепается на шарпе или электроне. Ну, или qt.
>Это странный некродиалект, который нигде почти не используется
docwiki.embarcadero.com/RADStudio/Rio/en/Modern_C%2B%2B_Language_Features_Compliance_Status
в ньюфаг-треде не помогли
https://repl.it/repls/ShrillFarflungInitializationfile
всё, пофиксил
Это будет один и тот же мьютекс, не?
Sleep(500);
ui->label->setText(ui->label->text() + '\n' + QString::number(i));
}
Почему все числа выводятся сразу, после 5 секунд ожидания?
Ну хуй его знает чувак... может... ЗАГУГЛИТЬ и узнать? Тебе дали наводку, тебе мало? Может тогда присмотришься к жопаскрипту?
Преждевременная оптимизация - корень всех зол
Гугли строковые итераторы. Там можно задать разделитель.
Используй QTimer. Я вообще хз откуда ты этот Sleep взял
Вкатываюсь в плюсы. Прочёл книгу "с++ за 21 день" чисто для старта. Что можно прочесть потом? Есть ли смысл читать "язык программирования с++" страуструпа там вроде как те же азы, но чуть более подробно и больше информации даётся. Или же не стоит пережевывать одно и то же и сразу валиться вперёд?
У меня мутипроцессная прога, между родительским и дочерним процессами есть расшаренный deque (спасибо бусту за возможность шарить контейнеры). Как мне получить файловый дескриптор от верхнего элемента deque? Дочерний процесс вызывает другую программу через execve и я хочу заставить эту программу читать данные из вершины очереди. Я думал использовать для этого сисколл dup2, чтобы связать файловый дескриптор верхнего элемента очереди с stdin и при запуске целевой программы заставить ее читать из stdin (читая из stdin - она будет читать данные из контейнера в виду дубликации файлового дескриптора).
шапка треда. там вские скоты мейрсы, саттеры, александрески.
Я тот анон, которому посоветовали брюса эккеля. кстати, весмьа нплохо чем гуси-лебеди страуструпа.
Страуструп может и мощный программист но как пистель учебных книг он не оч.
>и цикл идёт ещё на один заход, игнорируя условие выхода
чет проиграл с этого охуевшего цикла, напомнило одного обнуленного президента
спасибo. пoнял.
да спасибо, я уже видел этот header.
>1. Рекурсивно вызвать функцию обхода для левого и правого сына?
ето не бинарное дерево, ты обосрался
Спасибо, анон! Блять, как же тупо я обосрался
Я как чел, который ограничил эти ёбаные функции ответственно заявляю, что только одна станет нулём. Но спасибо за замечание, уже переделал
Трави стори, мне стало интересно :3
Если в качестве компаратора указать greater<CLASS>, компилируется, но сравнивается неправильно (видимо, вижла сравнивает указатели сама)
Как я могу указать способ сортировки?
Я не разобрался с синтаксисом указания компаратора, но теперь все в порядке.
set<T, function<bool (T,T)>> name(funcName)
Просто любопытно, что нужно делать, чтобы исключения как-то заметно повлияли на производительность?
std::greater без параметров - это transparent компаратор, будет сравнивать любую сравнимую хуйню, главное, чтобы нужный компаратор был на месте. Удобно, когда есть std::map<FatKey, int> и нужно что-то найти по ключу, который сложно/долго/етц создавать, поэтому пишут SlimKey и по нему ищут. Если в шаблоне компаратора указать FatKey, то он больше не будет прозрачным и такая хуйня не прокатит.
По твоему вопросу - у тебя указатели, так что пиши свой компаратор, в котором их будешь разыменовывать.
Просто использовать эксепшоны "для всего", как рекомендует Страуструп. Эксепшоны - это медленно.
Просто использовать эксепшоны "для всего", как рекомендует Страуструп. Эксепшоны - это медленно.
Прямо так и сказал, "для всего"?
Гугл молчит. Компилировал в MVS.
Экзепшены уже используются везде, ты не можешь их избежать, ведь пишешь не собственную программу в сферическом вакууме, а лишь встроенную в уже существующий фреймворк ОС и прочего.
А ну да, точн. Ну я на самом деле нуб.
В гугле запрещают юзать эксепшены при написании крестового кода тащемта, ибо у гугла весь крестовый софт сверхчувствителен к перформансу (кресты сейчас в других индустриях и не существуют, только в пердолинг-хуйлоудах и жестком рилтайме) не то, чтобы это что-то плохое, скорее даже наоборот, но как факт
На гигантов равняться не стоит, у них очень специфичные проблемы.
А если программа работает со сторонними данными, то они не нужны?
в гугле запрещены эксепшены не из-за перформанса, а из-за того что у них весь код легасидрисня, который будет течь на каждый эксепшен.
> кресты сейчас в других индустриях и не существуют, только в пердолинг-хуйлоудах и жестком рилтайме
Ты хуйлоадщик из гугла? нет? Что тогда тут забыл?
Сам себе противоречишь, друг.
условный прыжок это пук по сравнению с раскруткой стэка. Это все равно что сравнивать циклы и рекурсию по производительности. Не тупи, пчел.
Компилятор лучше оптимизирует код без эксепшонов.
Разъясните по хардкору за московскую нвидию. Стоит пробовать вкатиться C++ мидолу?
Тут один полупокер в ней работает.
Но справедливости ради синтаксис раста выглядит уебищно, по крайне мере на первый взгляд
Понятно, пасибо. Я собственно Лелбака интервью тут слушал и вспомнил, что в мск нвидия есть.
>дебагеры в Тегру
Ага, то есть по вакухе смотреть чо нужно конкретно. Я бы тулинг какой-нибудь с удовольствие пописал.
Раз уж ты ответил, то скажи еще нужно видимо ждать окончания ковид событий, чтобы пробовать? Как обстанова то вообще?
>действительно почти во всём лучше крестов.
Кроме одного маленького момента: Раста не существует. В корпоративном мире that is.
> Раз уж ты ответил, то скажи еще нужно видимо ждать окончания ковид событий, чтобы пробовать? Как обстанова то вообще?
Хайринг зафризен из-за ковида полностью. Обстанова ок сидим из дома работаем все.
сферу легаси и олимпиадного программирования
справедливости ради синтаксис крестов выглядит как смесь ежа с ужом, за счет родства с сишечкой. Выглядит как си, работает как UB.
Читы на видео игрушки для дебилов
Для всего? Браузеры, десктопные приложения, игры, сервера, офисы, фотошопы, редакторы, финтех, тысячи их же.
Насчет серверов ты погорячился, анон. Сервера на плюсах не пишут уже, он уступил это другим языкам (даже той блевотной джаве, да и на ноде начинают макаки пилить серваки, и индустрия хавает).
Вопрос в другом - обоссыт ли в итоге раст плюсы или нет. Язык еще молодой, а уже хайпанул пиздец как, плюс безопасность памяти. Хз-хз..
Например, бэкэнд в финансовой индустрии. Огромное количество внутренних приложений гоняющих всякие тяжелые расчеты.
Пишут-пишут, у фейсбука большая часть бэкэнда на плюсах.
Чому это не пишут? Хоть GWS и IIS, фейсбук и яндекс, хоть сервера League Of Legends или World Of Tanks.
Вообще удивительная ситуация сложилась. С одной стороны буквально полмира держится на С++, все с продуктами языка сталкиваются каждый день: от Windows до Word, 1C, очередной игры или компа в автомобиле. С другой стороны я регулярно вижу удивленные взгляды друзей или родственников "Ебать ты динозавр, никогда не встречал С++ погромистов, сейчас же все жаве пишут лолбля".
Какая-то странная картина мира сложилась в медиа где в основном разговаривают о каком-то го, жс, питоне и прочих мемах.
Ну, ОСи на чистом Си все же пишут, а не на плюсах (что мне не совсем понятно, буду рад, если объяснят, а то сложилось так, что все ядра нынче популярных ОСей написаны на Си).
Джава реально популярнее плюсов, но от этого она менее блевотной не становится. Это просто потому, что пластиковый мир победил и кровавый тырпрайз требует своих, наркоманских инструментов, где джава выстрелила пздц как (хотя тот же сидиез мне импонирует больше джавы, который, увы, сосет хуй, ибо анально огорожен мелкософтом, но все равно лично я предпочитаю кресты, ибо я байтоёб).
Я грызу Boost.Process и пока не могу понять как я могу асинхронно хэндлить N дочерних процессов. Цель - у меня есть родительский процесс, который кидает данные в расшаренный буфер, а N детей хавают оттуда (я в курсе про состояния гонки, вопрос не про это). Как этого достичь, юзая буст? Заранее спасибо.
унижения на собеседования. Идешь на с# в какой-нибудь дойче, а тебя еще унижают на си++ два часа перед вопросами по шарпу.
Ничего нового не пишут, имеется в виду. То есть когда решают на чем писать какой-то новый продукт, не выбирают кресты. Бэк Яндекс Такси, кстати, на крестах написан просто в целях экономии на программистах — Gett написан на го и никаких проблем.
Надо только потерпеть? Там всё схвачено?
Убер тоже не на C++, коре там на джава и го. Дискорду не хватило скорости го и они перешли на Раст.
давно известно, что у джавистов и макакаскриптеров самые высокие зп из девов, крестовикам и сишникам платят в разы меньше, так рыночек устроен, увы. Но кресты - это прежде всего душа. Я как представлю что мне надо будет писать что-то на джава - сразу рвотные позывы начинаются, никакая надбавка в 20% к зп не поможет.
А в чем проблема собственно? Синтаксис очень похожий, велосипеды те же писать приходится
анон, тоже тебя не понимаю, алгоритм есть алгоритм, на чем его не напииши, вот последний жопоразрыватель у меня был, это то что в питухоне нет свич-кэйс
Чтобы поддерживать существующую инфраструктуру. Понятно, что с нуля лучше писать на расте, но гуглопоиск не перепишешь.
Хотя с конструктором перемещения протупил
проиграл с char✹ capacity
Язык без эксепшенов? Я ебал.
Коды ошибок не просто так в своё время были признаны порочной практикой. Но если зумерам хочется топтать грабли и потом снова переизобретать эксепшены, то ради бога.
Зачем нужен раст, когда современный С++ безопасен по памяти? Офк С++ позволяет наговнокодить и позволяет писать код с переполнениями буферов и дикими указателями, но как бы есть умные указатели + в контейнерах есть проверка границ буферов (если юзает метод at для доступа к элементу массива, а не аутичные сишные [], где нет проверок), что исключает переполнения. Нахуй тогда тот раст всрался, если современные кресты с использованием смарт поинтеров и STL безопасны? Плюс кресты как язык мощнее по фичам, чем раст, как ни крути. И метапрограммирование - вещь ОЧЕНЬ мощная.
Засирают код проверками и перекидываниями этих ошибок на уровень выше. Читать неудобно, писать заебывает, поддерживать муторно. Расширяемость плохая — добавил новую ошибку, надо править весь вызывающий код по цепочке. На один и тот же код вещают кучу разных ошибок, а юзеры библиотеки потом не могут понять, почему функция возвращает ERROR_GENERIC_FAILURE.
слышь, беспредельщик, ты за предъяву свою гнилую ответишь? Чем тебе коды ошибок не угодили?
а ты не выходи, наличие хуя у твоего спящего товарища не повод этот хуй начать сосать
А с экспешенами тебе надо все заворачивать в RAII и писать код с мыслью что в любой момент может произойти бздых и выполнение пойдет по другому пути.
С кодами ошибок у тебя хотя бы код исполнятеся предсказуемо.
Два стула, в общем.
Используй vector.at и не выйдешь. Будешь тормозить только.
эксепшен для полупокеров, в любой момент все может ебу дать и не факт! что очистится. Если через коды ошибок работать, контроль в разы лучше, но код становится на вид как говно.
>а ты не выходи, наличие хуя у твоего спящего товарища не повод этот хуй начать сосать
А что, так можно было?
мимо Robin Seggelmann
В RAII один раз завернул, и оно лежит себе в углу и не мешает. А думать об эксепшенах надо в основном только в том плане, что надо научиться пользоваться современными возможностями, которые позволяют писать безопасно.
> С кодами ошибок у тебя хотя бы код исполнятеся предсказуемо.
Он всегда исполняется предсказуемо. А когда нет, то это называется UB.
>как вкатиться в буст
буст не един. нужно ставить вопрос "как вкатиться в boost.libname", они все разные и для разного.
две недели назад собирал буст, собралось вообще без проблем. даже удивился. А у тебя в чом беда?
boost.interprocess, брат
Очко горит уже второй день, помогите кто-нибудь, пожалуйста! Доки реально тухлые какие-то
>на собеседовании
>"а как реализована фича X в языке?"
>"ну так-то так-то"
>"Да, верно"
>поговорили минут 10 про неё
>прихожу домой, чекаю cppreference
>мы оба несли полнейшую хуйню
Так случалось наверное раза 3 уже. Главное - говорить так, как будто так оно и есть
Я на Линуксе.
По идее должно компилиться через флаги -lpthread -lrt, оно-то компилится, но при попытке исполнить бинарь:
terminate called after throwing an instance of 'boost::interprocess::interprocess_exception'
what(): boost::interprocess_exception::library_error
[1] 48688 abort (core dumped) ./testboost
set BOOST_BUILD_USER_CONFIG=tools/build/user-config.jam
b2 address-model=x64 toolset=msvc threading=multi --with-interprocess variant=debug,release link=static runtime-link=shared --stagedir=stage/x64
Это по памяти. Если не разберёшься, иди нахуй.
Тащемта vcpkg на Линуксе тоже работает.
> 48688 abort
Ну еб твою бабушку, возьми дебаггер и посмотри, где падает. Потом почитай, почему падает
> Пошел нахуй, я на Линуксе
Ну и страдай теперь, красноглазик.
> Тащемта vcpkg на Линуксе тоже работает.
char
wchar_t
std:string
System::String
int
__int32
uint32_t
нахуй столько?
Что используют нормальные люди из этого месива?
>char
Простой 7-битный аски
>wchar_t
Платформозависимая хрень, с которой приходится жить.
>std::string
Строка из стандарта
>System::String
Дотнетовская строка из C++/CLI, это вообще отдельная тема
Насчёт интов - в стандарте не указаны конкретные их размеры, поэтому в компиляторах сделали собственные типы вроде __int32. Начиная с C++11 и C99 ввели стандартные типы для целых фиксированного раздела: https://en.cppreference.com/w/cpp/types/integer. Кури стандарт, в общем.
Семибитный.
пчел, char это байт (по крайней мере на всех самых распространенных архитектурах), в байте 8 бит, где ты еще один бит потерял?
char/std::string - восьмибитовые строки, можно хранить текст в ASCII, в 8-битных кодировках (cp1251 и прочие), в utf-8
wchar_t/std::wstring - пытались увеличить размер символа, но не определились, насколько именно. Годятся чтобы хранить строки в utf-16 на винде (где на них всё апи), а на линуксах оно практически юзелесс (там все живут в utf-8).
Всё, что начинается на подчеркивания - какая-то внутренняя кухня компилятора, без веских причин не используй.
int - обычное повседневное целое число.
uint32_t и прочие _t - числа фиксированных размеров в байтах. Если ты в каком-то месте закладываешься, что int будет именно 4 байта, и не байтом больше, то там надо писать uint32_t
А ну ка, посчитай сколько символов в таблице, и сколько бит на это надо.
Другое дело, что аски по-разному дополняют всякой региональной залупой не к ночи будь помянут КОИ-8. Однако по стандарту сам ASCII таки 7-битный.
>>75980
Давайте только без срачей
> The committee considered an eight-bit code, since eight bits (octets) would allow two four-bit patterns to efficiently encode two digits with binary-coded decimal. However, it would require all data transmission to send eight bits when seven could suffice. The committee voted to use a seven-bit code to minimize costs associated with data transmission. Since perforated tape at the time could record eight bits in one position, it also allowed for a parity bit for error checking if desired. Eight-bit machines (with octets as the native data type) that did not use parity checking typically set the eighth bit to 0.
Пчел, таблица ASCII имеет 256 символов (от 0 до 255, спец символы после 127 - это тоже часть таблицы ASCII, прикинь!). 256 = 2^8. Вот тебе и 8 бит. Не спорь плиз, ты реально глупо выглядишь, говоря по сути, что char имеет размер 7 бит вместо 8, лол. У тебя тогда sizeof(char) никак не мог бы выдавать размер в 1 байт.
Хуево. Именно поэтому новые проекты пилят на расте, а старого легаси на сишечке и плюсах настолько много, что ни у кого нет ни денег, ни сил, ни времени, ни желания все это переписывать, а поддерживать все это как-то надо.
>спец символы после 127 - это тоже часть таблицы ASCII, прикинь
Не неси чушь, а почитай историю. Кодовые страницы - не часть аски.
> У тебя тогда sizeof(char) никак не мог бы выдавать размер в 1 байт.
Ты исходишь из того, что байт=октет, что в зоопарке 70-х было не так. Многие компьютеры тогда вообще имели размер слова кратный шести, потому что использовали BCDIC.
>Ты исходишь из того, что байт=октет, что в зоопарке 70-х было не так. Многие компьютеры тогда вообще имели размер слова кратный шести, потому что использовали BCDIC.
Какая разница что было в 70-ых? В 2к20 байт=октет.
>Кодовые страницы - не часть аски.
И именно поэтому у спец символов есть специально отведенная кодировка (читай, числовое значение) в самой таблице? Пруфани, что в данный момент это не часть таблицы ASCII.
Вот и выросло поколение, не видевшее ничего, кроме юникода. ASCII это 7 бит, в восьмибитных кодировках это нижняя половина таблицы, а верхняя уже зависела от региона, системы и левой пятки программиста. В рашке восьмибитные кодировки были cp866 (dos), windows-1251 и koi8r.
При чем кои8 символы располагались не по алфавиту, а так, чтобы при откусывании 8 бита текст становился читаемым транслитом. Сортирвать наверное было в кайф такое
>Пруфани, что в данный момент это не часть таблицы ASCII.
Пожалуйста - последняя ревизия ASCII от 1986 года.
Ты же понимаешь, что даже если будут деньги и желания, никто уже например ядро линукса не перепишет на расте
Ну так я и говорю - легаси как было С/С++, так и останется, ты ж читай что я написал. Понятное дело, что 30 млн. строк кода в ядре Линя точно не будут переписывать.
Новые проекты пишутся уже на расте, ибо нужно быть полоумным шизиком, чтобы пилить новые проекты на дырявых япах с UB в 2к20.
upd:
Мелкософты год назад начали переписывать много софта с С на раст, между прочим. Так что мб к 2030 году будет безопасная винда без возможности совершить эскалацию привилегий или удаленное исполнение кода из-за дыры в ОС (в 99% случаев такие жесткие хаки возможны только из-за проблем с памятью, логические же баги, которые бессмертные, как правило, очень ограничивают простор для хацкеров).
Но линь как был дырявым, так и останется, ибо Торвальдс не позволит никому переписывать ядро Линя. Он даже плюсы хейтит, какой там раст...
Хуй знает чем вам современный С++ не угодил. Меня лично все в нем устраивает кроме отсутствия адекватной работы с метаданными. Почему я не могу блять на ЭТАПЕ КОМПИЛЯЦИИ пройтись по всем полям класса, получая их имена? Так же блять нельзя и по всем именам + значениям енумов пройтись. Почему создали стандарта такие пидорасы, что за 20 лет не прикрутили настолько нужные вещи? Интересно как с этим в расте обстоят дела?
https://pastebin.com/4ME6LEQd
п.с. В будущем мне эта библиотека понадобится для объединения нескольких изображений в одно, для этого у нее весьма удобный интерфейс, поэтому и выбрал. Но если не получится сделать задуманное, буду пробовать с libpng. Хотя, OpenCV ИСПОЛЬЗУЕТ модуль libpng для работы своих процедур. Странно, что завезли кучу конвертаций цветов изображения, несколько видов компрессии, а банальную работу с палитрой нет. Или просто я не вижу...
>требует своих, наркоманских инструментов, где джава выстрелила пздц как
Ну справедливости ради скажу, что экосистема джавы, а именно инструменты для отладки, системы сборки, профилировщики, менеджеры пакетов - все куда лучше, чем в С++ на данный момент. И пользоваться этими инструментами куда приятнее.
Аналогично могу сказать про язык, джава - довольно простой язык, с понятным синтаксисом. Здесь библиотечные функции названы понятными именами, а не каким-нибудь нечитаемым говном в духе си и posix. Модель памяти в джаве описана куда более понятным языком, чем в плюсах.
Не вижу ничего плохого в том, чтобы использовать джаву.
>С одной стороны буквально полмира держится на С++
Браузеры, графика, какой-нибудь околосистемный софт, высоконагруженные сервера гугла и яндекса - написаны на плюсах.
>Ебать ты динозавр, никогда не встречал С++ погромистов, сейчас же все жаве пишут лолбля
Потому что все вышеперечисленное пишется сейчас в довольно малых объемах, как правило за рубежом, и очень небольшими командами разработчиков. Действительно, жс и джавы в современном мире нужно куда больше.
Если верить википедии, opencv решает не только задачи компьютерного зрения:
>OpenCV — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения
Алсо, я уже решил проблему байтоебством, а хотел без него..
>Ну справедливости ради скажу, что экосистема джавы, а именно инструменты для отладки, системы сборки, профилировщики, менеджеры пакетов - все куда лучше, чем в С++ на данный момент.
Какая-то энтерпрайз поебота с XML и гигабайтами оперативки требований
>Здесь библиотечные функции названы понятными именами, а не каким-нибудь нечитаемым говном в духе си и posix
Нечитаемое говно отлично и быстро читается, если ты не ньюфаг. А вот джава многословность вредна всем, и ньюфагам, и олдфагам
Твоя задача ни к чему из этого не относится. OpenCV это такая замена матлабу неплохая - матрицы там, фурье-хурье, картинку нормализовать и т. п., но не байтоебство.
Тут как бы много всего перечислено, но все это пишется в очень маленьких масштабах.
В РФ и СНГ наверное это менее 10% всего рынка разработки будет.
И попасть ну очень сложно в такие места, в которых пишутся вот эти браузеры и высоконагруженные сервисы. Наверное потому что такая компания одна на все полушарие. А вторая находится на другом полушарии.
>Какая-то энтерпрайз поебота с XML и гигабайтами оперативки требований
Но несмотря на минусы, работать удобнее именно с этой энтерпрайз поеботой. Кстати добавлю, что хоть IDEA и CLion по сути написаны на одном движке, если можно так выразиться, то количество разных фишек у идеи куда больше, чем в плюсах. Но связано это также и с тем, что идея постарше будет, но все же.
>Нечитаемое говно отлично и быстро читается, если ты не ньюфаг
Ну если со стандартной библиотекой проблем действительно нет, то вот со сторонними уже проблемы. Начиная от каких-то магических макросов и заканчивая очень непонятными именами функций. Помню, как пришлось впервые использовать в джаве библиотеку для парсинга хтмл, так я охуел от того, насколько же могут быть нормальными именами у функций, которые сразу дают тебе некоторое представление о том, что именно будет происходить. А еще поддержка javadoc в ide, где ты можешь сразу посмотреть документацию. В плюсах такого к сожалению практически нет.
//A.cpp
int func(vector<int> &vec_name)
{
...
}
//B.cpp
extern int func(vector<int> &vec_name)
int main()
{
...
func(vector<int> vec)
}
не разрешенный внешний символ
тоже самое если вынести в .h
точку с запятой забыл
В вижуал студии.
C☦☦
C††
C✝✝
C࿕࿕
C࿖࿖
Твой гугл какой-то другой.
В расте нет эксепшенов и они предлагают пробрасывать Either как в хачкеле?
Можно просто паникануть с кастомным текстом.
Можно пробросить с преобразованием
let hui = a.get("hui")?; - для случая, когда есть трейт From для проеобразования типов ошибок
Можно преобразовать на месте, если нет
let hui = a.get("hui").map_err(|e| F::new(e.to_string()));
А можно вообще все возможные ошибки в енум завернуть и пробрасывать наверх без преобразования
Убогие, как же вам тяжко. У нас-то в расте просто ебошишь
mod {
pub(crate) fn sum(a: i32, b: i32)->i32 {a+b}
}
прямо в майне своём. А потом по хинту в иде уносишь в отдельный файл. Инклюды эти, блять. Подключить внешнюю либу? Сударь, извольте поебаться от души.
Растообиженка идет срать в С++ тред.
Ну да, используем модель компиляции Си, щито поделать.
Блядь, вот это показательно, растоман не сидит в своём треде, потому что там 0 анонов, примерно такая же картина ирл.
проитерируй вектор. Если хоть одна из ячеек == nullptr, то вектор векторов неполон, возвращаешь false, иначе - true.
проитерируй вектор. Если хоть одна из ячеек == nullptr, то вектор векторов неполон, возвращаешь false, иначе - true.
есть мышь с доп кнопками, как за отследить нажатие этих кнопок ?
стандартный софт дико накаляет, хочу альтернативу для него.
нагуглить что-либо вменяемое не получилось
Нет, в смысле мне нужно найти в векторе вектор, без итерирования, как-нибудь по простому это можно сделать?.
без итерирования по-простому вряд ли получится. А почему ты не можешь просто циклом по нему пройтись, в чем проблема-то?
Да заебало писать циклы на всю хуйню, почему нельзя реализовать нечто подобное std::find(vector.begin(), vector.end(), {1, 2, 3, 4, 5});
не понимаю, ни о чем мне не говорит и все что я нашел, по этому запросу, это чей-то кусок кода
это задача поиска строки в подстроке - гугли всяких БОЙЕРОВ МУРОВ и прочую такую парашу. Всякие find это про другое немного
Какая-же питон годнота относительно этого говна.
[1, 2, 3, 4, 5] in vector
Вот что может быть проще?
Ну выглядит тем что надо, даже понял про боеров муров которых я не хотел сначала гуглить.
Правда проверить пока не получается т.к. я сейчас на windows, а тут на mingw 7.3 и msvc 2017 такие новшества видимо ещё не поддерживаются.
Ну тащемта ты почти угадал, нужно только перед {} дописать std::vector э и <int>, если нет c++17
Да хоть на палме, эта функция везде должна быть
Раст есть в ISO?
Это не зашквар - а жизненная необходимость. Мы всё используемое винапи обернули в нормальные крестофункции, и с этим работать в разы удобнее.
✚✚
Лучше бы мимокрокам пояснили за 17/20 стандарт в шапке, дауны ёбаные.
за 23 тоже можно было бы
Тогда нужно создать на pastebin док и пилить потихоньку шапку.
Ну, наверное немного актуальной инфы добавить и сделать шапку как у тех же питонистов или жс.
Вынести книги в нее, чтобы меньше в треде спрашивали про что читать первым. Вынести про то, как постить код и так, по мелочи, типа того же буста о том как его учить (напримере того, что тут пчел задавал вопрос о том, как учить буст, но не дал конкретики какой именно).
Шапка у пхп и свифта хорошо оформлена кстати для примера.
@
НЕ КОНСТЕКСПР
@
ИДИ ВЕЛОСИПЕДЬ
Я твой дом труба шатал, комитет!
Это вопрос из игры "Не смотри на петуха". Ни один нормальный человек не будет разбираться в этой хуйне.
перехватывает только стандартные кнопки =(
ЮЗЕР-ДЕФИНЕД ЛИТЕРАЛС
@
БУКВАЛЬНО ПРИМЕНЯЮТСЯ ТОЛЬКО К ЗАХАРДКОЖЕННЫМ ЛИТЕРАЛАМ
@
НЕ КОНСТЕКСПР
@
НЕВОЗМОЖНО НАПИСАТЬ ЧТОБ БЫЛО КОНСТЕКСПР
Ты будешь копаться в легасиговне, 80% времени тратя на еблю с языком и его инфраструктурой если эту смердящую кучу говна размером с Эверест можно назвать инфраструктурой До серьезных/интересных вещей о которых ты мечтаешь тебя не допустят.
Ты не будешь делать какие-нибудь охуенные проекты. Потому что кто делает какие-нибудь охуенные проекты заинтересован в них. И он их просто берет и делает. А ты будешь вечным посетителем "посоны, что бы написать"-тредов.
Ты прав, всё так и будет. Что там по моим вопросам?
Анон, не стОит. С++ - мертвый язык для нормисов. Он не мертвый в целом, но на нем пишется в основном слишком крутой софт (известные браузеры, ААА игры, например), к которому допускаются инженеры высшей категории с десятилетиями опыта работы (или гении). Тебе нужно серьезно ебануться головушкой и помешаться на крестах + потратить на это +- 10 лет, чтобы ты на уровне продакшена писал годноту. Во всех остальных 99.9% случаев, если повезет, будешь мейнтенить бесполезное говно мамонта, написанное на крестах стандарта 98 года. Подумай трижды прежде, чем врываться. В 99% случаев оно того не стоит, особенно если ты не гик-шизик как я
Удачи и береги себя, бро.
Хорошо, тогда какую альтернативу выбрать? Чтобы можно было на языке реализовать вообще всё. Ну за исключением фронтенда и ещё пары возможностей мб.
Это неправильный критерий выбора. Теоретически, ты можешь на нулях и единицах реализовать все, что угодно. Но стоит ли оно того? У каждого языка программирования есть какая-то своя цель. В индустрии С++ не юзают для хай-лвл программирования, на этом языке пишут сложную кор-логику. Вместе с тем, есть языки, которые вне веба практически не используются - пыха, руби, js. И таких примеров куча. Если у тебя нет четкой цели или нет понятия какой технологический стэк ты хочешь изучать, то советую сначала разобраться в этом. Потом ты сможешь выбрать для себя подходящие языки программирования.
> Чтобы можно было на языке реализовать вообще всё.
Вот он, максимализм. Тебе для ЧЕГО? Следует разделить два вида деятельности: зарабатывание денег и хобби. Для зарабатывания денег на плюсах тебе уже сказали. А какой-нибудь сайд-проект пилить ты можешь на чем угодно, хоть на плюсах, хоть на расте, хоть на го, хоть на хаскелле -- для этого необязательно десятки лет задрачивания стандарта плюсов.
все равно, выбирать плюсы для чего-либо, связанного с вебом, это маразм. Край - бэкэнд, и то если ты прогаешь сервак, который должен выдерживать траффик где-то на уровне фейсбука. Во всех других случаях это лишний оверкилл и кровавый анальный ангст.
> Цель выше.
Это не цель, а залупа. Цель -- это написать конкретную программу с определенными характеристиками.
>Край - бэкэнд, и то если ты прогаешь сервак, который должен выдерживать траффик где-то на уровне фейсбука.
На правах кулстори - пишу на крестах больше пяти лет, надо было ВЕБ БЭКЕНД небольшой написать. Так вот - нашлепать на АспнетКоре было проще (с нуля, я чуть чуть шарп знаю, Асп вообще никак), чем написать это на крестах.
В каком смысле не цель? Или ты из числа тех, кто при написании любой новой проги бежит читать основы языка и стандартных модулей?
Ну, логично. С++ бы создан для байтоебства, равно как и С (не говорю, что это плохо, я сам тащемта байтоеб), на этих языках не зашквар только лоу-лвл софт разрабатывать, все что выше уровня сугубо системного программирования - в 98% случаев маразм и лучше выбрать другой язык.
Соответственно, где-то там дальше его из очереди вынут и скастуют в нужный дочерний тип.
Проблема: начал использовать unique_ptr с custom deleter и пулом объектов, теперь, разобрав тело объекта, я не могу привести его к unique_ptr<GenericObject, Deleter<GenericObject>>, потому что у него другой, свой deleter - unique_ptr<ChildObject, Deleter<ChildObject>>
Как это можно решить?
Пока что в голову пришло только использование shared вместо unique, так как в этом случае deleter будет отделён от типа
Месяц - два
>You get the message because painting to the widget's paint device is only allowed inside the paint event. If you use it outside the paint event, there's no guarantee it will work.
https://stackoverflow.com/questions/17704597/qpainterbegin-widget-painting-can-only-begin-as-a-result-of-a-paintevent
>В РФ и СНГ наверное это менее 10% всего рынка разработки будет.
Ну так в РФ и СНГ и нет ничего кроме веба считай.
Я хотел в deleter'е возвращать объекты в пул (темплейтеный), поэтому хотелось бы знать тип, для которого вызывается deleter
Логику удаления помещай в метод класса. А делитер (как анон выше говорил) универсальный который будет просто вызывать этот метод.
Не совсем понимаю, не будет же он сам в себя в пул возвращать, пока он ещё жив, лол
Объект уедет в другое место за время выполнения своего метода. Насколько это легально? А если в пуле вызовется деструктор объекта, а я всё ещё в его методе (а именно так и получится)?
Куда уедет? А с деструктором да, нужно осторожно. После вызова метода пула нельзя обращаться к членам объекта. Следить за автоматическими переменными.
Ну то есть в идеале после вызова метода пула вообще ничего не делать внутри метода объекта. Но всё равно выглядит жутко и нелегально, лол
С другой стороны -- это хотя бы должно работать, плюс без лишнего оверхеда в виде хранения указателя на функцию
Стековерфлоу разрешает. Да и мне в любом случае в начале иерархии нужен абстрактный класс, других идей не нашлось.
Попробуй ещё в сторону других указателей посмотреть, например boost::intrusive_ptr
Вот. Тупо ожидалось '{'. Ну и дальше видимо парсер поехал и находит ошибки на ровном месте.
А как он узнает, метод какого объекта вызывать, если deleter будет универсальным? Во что кастовать? А если deleter тимплейтный, то узнает, но будет та же проблема, что и сейчас -- несовместимые указатели
> Не хватает скобочек
> Двачь что нужно этому ебучему компилятору? Пишет, что не хватает скобочек
Double dispatching. Алсо, выше анон предложил оператор delete перегрузить
Ну так если они есть - я не могу реализовать конструктор в другом файле.
Конструктор родительского класса, как я понимаю. И что? Почему я не могу тело конструктора производного класса в cpp перенести-то?
у тебя конструктор либо в одном месте, либо в другом. Ты хочешь полконструктора в хедере, полконструктора в срршнике, так не бывает.
https://stackoverflow.com/questions/2620218/fastest-container-or-algorithm-for-unique-reusable-ids-in-c
и
https://codereview.stackexchange.com/questions/108584/container-of-objects-with-unique-ids
читал. Мне не понравились ответы, особенно использование тяжелого математического boost intervals для такой задачи. Хочу послушать вас.
Офк не обязательно "запилить" с нуля, можно ссылочки на уже готовые решения/библиотеки :3
Я просто не понимаю как такое гуглить.
> похоже на flat_map
Вряд ли. Здесь ключ это автоматический числовой индекс, который выдает сам контейнер.
Да по первой ссылке этот интервал только как пара чисел используется без логики. Сделай сам.
В принципе, если самому сделать бинарное дерево свободных индексов вместо std::set, можно за счёт более тонких оптимизаций также получить выигрыш при удалении и мерже интервалов индексов. Но я сомневаюсь, что у тебя настолько нагруженная система.
А в каких странах есть много чего помимо веба?
В РФ и СНГ довольно большой айти рынок, как мне всегда казалось, обусловлено это большим количеством технических вузов, в которых можно бесплатно учиться.
Не нужны тут никакие деревья. Складывай это всё в обычный вектор, плюс рядом храни массив доступных индексов (как стек). Insert = достать из стека индекс, потом по нему сконструировать объект, Remove = вызвать деструктор по индексу, положить индекс в стек. Если захочется итераторы докинуть, где-нибудь надо хранить ещё какое-нибудь битовое поле жив/мёртв. Я сам такое писал, пользуюсь, вещь очень полезная, непонятно, почему не является стандартной структурой данных.
Нашлёпал по-быстрому proof of concept
https://gcc.godbolt.org/z/_B3qp9
По-хорошему, стандартные контейнеры надо выкинуть, памятью рулить вручную. Стек перевернуть, конструкторы/деструкторы вызывать по месту.
Тебе, ебануктию, в стандарте многопоточность отвязали от ОС
в винапи есть больше, чем в стандартной библиотеки. Но в среднем - тебе хватит.
я все еще выхожу на связь
> Выпускники
В макдаке они преобладают. Нормальные работодатели смотрят на опыт и умение работать с нужными им технологиями
Как это отменяет его вопрос? Статистика есть статистика, а твоё мнение -- это твоё мнение.
Отлаживать библиотеку просто невозможно. Она активно дергается другим приложением, и дебажный билд тормозит это приложение раз в 100. Даже всего лишь один проход.
Что делать? Есть ли смысл переписывать вектор в сишный массив? Вектор же вроде итак всего лишь обертка вокруг массива.
https://docs.microsoft.com/en-us/cpp/standard-library/iterator-debug-level?view=vs-2019
Глобально нулю это задефайни в проекте.
Минимальное значение для переменной типа LongLong: -9 223 372 036 854 775 807-1
Смотреть как нубы наматываются на IEEE-754 можно вечно.
алсо, ты что на телефоне кодишь, поехавший
у тебя underflow, макакен :-)
Кстати, там еще у меня вопрос насчет codes_exception.h Не совсем понятно, нужно ли его в данном случае упоминать вообще в мейкфайле, но подозреваю, что нет, ибо от него ни один .cpp/.c файл не зависит, а значит и не нужно собирать еще один .o файл.
В чем смысл делать коды эксепшенов? В этом же вроде и есть приемущества эксепшенов, что не нужно создавать 100500 кодов ошибок для всего.
Коды для - идентификации, мой велосипед - для удобства вызова нужного исключения.
Ты объявил глобальную переменную (MessageException) в заголовке. Её надо перенести в cpp, а в заголовке оставить только extern-ссылку на неё (если нужно).
Почему тогда на enum не жалуется? И как вообще правильней будет поступать в таком случае? Как ты сказал? Или есть вариант лучше?
Пока писал, решил на обум добавить const перед string и ошибка пропала. Т.е. константы define и const <type> можно без externов и выноса в src файлы использовать? И, видимо, enum тоже является "константой" в этом смысле. Или я не правильно все предположил?
Да, const тоже пойдет.
На enum не жалуется, потому что это объявление типа -- оно никак не "вытекает" из cpp-файла. Для языка нормально, что одни и те же объявления типов копипастятся в каждый cpp. Макросы define тоже действуют только на тот модуль, где они объявлены.
А вот глобальные переменные и функции экспортятся из cpp, поэтому на них линкер ругается, если находит дубликаты.
Что вот этой блядине надо? Накопал уже инструкцию, свежую 2020г степ-бай-степ для тупых долбоебов все как я люблю https://extenly.com/2020/01/29/integrating-qt-to-qml-step-by-step-beginner-guide/
Ииии..... Нихуя оно одним и тем же мне ебет мозги
Алсо, знаком с ООП в разных языках и в плюсах в принципе писал что то на классах без наследования но вот здесь уже ебала какая то, и на плюсы это даже не похоже, чисто сишная запутаная поебень.
Хотя ты сделал, я не увидел.
Таааак уже интересней (или нет, хз).
Я уже такое получал с другой правда хуйней, на стаке пишут копию нельзя чего то блять там
https://stackoverflow.com/questions/1779438/error-with-qobject-subclass-and-copy-constructor-qobjectqobjectconst-qobj
Какую копию, чево блять, у нас же скелет класса в заголовочном файле типа и мы ему просто методы определяем уже в программе не?
Нихуя сука вообще не понимаю чего делаю.
оно тебя сожрёт нахуй
Анон, если хочешь так сделать, придется все библиотеки в проекте пересобирать с этим флагом. И всем пользователям твоей библиотеки тоже.
И нихуя не сделать. Либо дебаг билды вот такие, либо адово медленные.
Прочитал в справочники Qt о QTranslator и ничего не понял.
Вопрос именно с созданием qm файлов.
Спасибо.
Это копия, сохраненная 27 августа 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.