Владей собой среди макак глумливых, Кресты хулящих за нехватку фич; Терзая код профайлером пытливо, Рантайма эффективность увеличь. Пусть ненамного - важно лишь стремленье, Тобою байтов взнузданный полет; Смотри на них со страстью, вожделеньем, Пусть на тебя глас Бьерна снизойдет.
Храни дизайн, не став рабом паттернов, Тестируй, не завязнув в TDD, В давнишнем коде вдруг почуяв скверну, Не забывай о собственном труде. Останься тверд, когда твой храм оплеван Статьями не осиливших глупцов; Когда стандарт меняется, и снова Ты должен изучать язык с основ.
Будь непреклонен с джавапетухами, Будь равнодушен к чистоте борща, Будь щедр с одноглазых змей рабами, Им либу бросив с барского плеча; Будь терпеливым к платине вопросов, К лентяям с говнолабами будь строг. Тогда царем ты будешь меж отбросов, Тогда, мой сын, ты будешь Крестобог.
Q: Я хочу тотчас вкатиться, а разбираться буду в процессе. Что я должен делать? Q: Не уверен, что хочу изучать C++. Как мне пощупать его без лишней ебли? A:
Читаешь эту книжку, смотришь упражнения из нее и суешь в онлайн-компилятор. Сообщения компилятора об ошибках копипастишь в гугл, ответы на возникающие у тебя вопросы ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее.
Памятка ньюфагу
Вопросы по синтаксису идут на хуй
Лабы идут на хуй
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй
Все идут на хуй
Хейтер сосет члены на пару со своей мамашей
Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешниесервисы.
FAQ
Мотивация
Q: Почему стоит использовать именно C++? A:
Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
Скорость
C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором.
Мощь
C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искуственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства.
Популярность
C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.
Q: Но он же давно устарел! A:
Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по С++, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".
Q: Сейчас все пишут на %languagename, а кресты сосут у него! A:
Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд хотя это вполневозможно, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.
Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад! A:
Попробуй учебники, изданные после 2011 года, в которых рассматриваются возможности новых стандартов (C++11 и C++14). Этифичи не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.
Литература
Q: Окей, я решил вкатиться. Какие же книги мне читать? A:
Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:
Для нюфань
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:
Автор(ы)
Название
Год
Ссылка
Бьерн Страуструп
Программирование. Принципы и практика использования C++
Кроме того, есть еще пара старых добрых учебников для ньюфагов. Часть информации в них устарела, но многие считают, что это компенсируется их большей, по сравнению с современными учебниками, понятностью:
Следует пролистать все перед переходом от лаб к написанию настоящего софта.
Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать:
Автор(ы)
Название
Год
Ссылка
Ален Голуб
Веревка достаточной длины, чтобы выстрелить себе в ногу
Ахтунг!
Предыдущие два раздела дополняют, а не заменяют классические книги о лучших практиках разработки без привязки к конкретному языку (Макконнелл, Uncle Bob, GoF).
Справочники
Наиболее детальные описания языка. Удобно использовать как референс, читать от корки до корки не обязательно:
Q: Я готов начать погроммировать! Куда мне писать код? A:
На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:
Платформа
Название
Описание
Ссылка
Windows
Microsoft™ Visual Studio®
Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда
Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM
http://codelite.org/, "sudo aptitude install codelite codelite-plugins"
для установки под *nix
Все
CLion
IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует
Здесь ты можешь найти все остальные существующие IDE, если ни одна из вышеперечисленных тебе не приглянулась.
Разумеется, установка IDE вовсе не обязательна. Ты можешь использоватьтекстовыйредактор в связке с каким-нибудькомпилятором, выбросить мышку, отрастить бороду и примкнуть к Церкви Святого Столлмана. Но лучше тогда сразу отправляйся в тред сишников, если не хочешь быть обоссанным другими сектантами за использование б-гомерзкого C++.
Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу! A:
Без проблем:
Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio
Гугловский фреймворк для автоматизации тестирования
Также не стоит забывать о том, что правильные посоны экономят свое время и нервы, используя мегагодные git и cmake во всех проектах.
Q: Мне надоело писать велосипеды, какие у вас тут популярные либы? Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать? A:
Гляди сюда:
boost
Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.
Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.
Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.
Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.
Несколько специализированных библиотек для часто встречающихся задач. Все — маленькие, быстрые и простые в освоении:
libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году)
Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше? A:
Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
Vladey a mocking among macaques, Crosses for blaspheming the lack of features; Terzi code profiler curiously, Runtime efficiency is increased. Let not much - it is only important aspiration, Thee bytes bridled flight; Look at them with passion, lust, Let your voice on Bjorn descend.
Keep the design, without becoming a slave to the patterns, Tested, not zavyaznuv in a TDD, The long-standing code suddenly sensed the filth, Do not forget about your own work. Stay firm when your temple spat upon Articles do not overpower the fools; When the standard is changed, and again You have to learn the language with the basics.
Be adamant with dzhavapetuhami, Be indifferent to the purity of borscht, Be generous with the one-eyed snake slaves They libu throwing with his master's shoulder; Be patient platinum issues To lazy to govnolabami be strict. Then you'll be the king among the debris, Then, my son, you will Krestobog.
>>707591 И так и так можно же. Взнузданный ~ обузданный, а обузданный в отношении процесса это вполне себе часто применяемый оборот. Например, чаще говорят "обуздать гнев кого-то", чем "обуздать гневного кого-то". Хотя это уже метафора такая скорее, но энивей. В принципе, тут можно было бы и поменять, да, размер не пострадает даже, но тогда смысл чуть-чуть другой становится, не "ты обуздал полет байтов", а "ты обуздал байты и они летают себе на поводках". Крестотред - самый филологичный тред зекача, лол. >>707594 Боюсь, что тогда получится говно. Я, конечно, могу в ангельский, но не настолько, чтобы пилить стихи уровня Лозинского на нем.
> Гайз, доброй ночи. Вопрос чуть не в тему треда,. но это мой любимый тред, и я надеюсь парни подскажете. короче ищу вакансии джуна или стажера на плюсах. но в городе где ищу - на данный момент таких вакансий не очень много.
Поэтому решил просто писать письма всем компаниям, которые выложили вакансии разработчиков c++.
>Подскажите плиз, как в сопроводительном письме правильно напроситься на стажировку\"на работу на полставки" в компанию? знаю, что вероятность не очень большая, что прокатит. но попробовать хочу - хуже не будет. вот только думаю, как бы правильно оформить это дело.
: - Анон, Что кроме лаб писал? - никаких суперпроектиков не пилил, если ты об этом. поэтому и хочу напроситься хоть на стажировку, хоть на полставки.
просто есть вариант пойти на QA,. Но сомневаюсь, потому что если в итоге все равно хочу свалить в девелоп, то QA ведь не особо мне поможет, верно ведь?
>>707630 Ищи мелкие компании без NDA-практики, дальше просто пиши прямым текстом предложение поработать за еду. Мало кто отказывается от почти бесплатного junior junior developer.
Ребята. Может кто-то видел гайд по /dev/video0 на крестах. я просто слишеом много ищю и вайпаю этим эти треды чтобы игнорить эту тему. Здесь же есть красноглазики и понимающие потоки!!!
>>707845 пойми.. живу в общаге.. и тут у меня сервак под бсд для моих целей важных хранение дцп и я надеюсь что мои коды запуска атомных ракет никто не стащит благодаря i3lock но всякие прохожие лапают пек ирл по сетке я спокоен вроде ну и я просто хочу стащить скрин с вебки того кто трогал i3lock и лил мне не e-mail. и на linux решение есть.. но в бсд нет! и надо писать! самому!
>>707864 Этот анон задал вопрос и пропал. Ему двое ответили, а он молчал. Спасибо я вместо него сказал. Это немного не настоящий случай. Наверно он всё таки не такой тупой был.
>>707955 В шапке все книги хуевые, да еще и на английском многие. Правильно, что ты на них не обратил внимания. Лучше читай Ишкову, "Изучаем C++ на задачах и примерах". В России про C++ отличные книги пишут, это все знают. Еще могу порекомендовать Белова, "Основы программирования на языке C++ Builder". Ну а если из иностранных, то самая-самая лучшая книга это Рао, "Освой самостоятельно С++ за 21 день".
>>708032 Обновил, ебаная магия. Но вопрос-то стоял как "книжка для продолжающих". Нахуя мне объяснения, кто такой if, зачем нужен виртаульный деструктор, и чем ссылка от указателя отличается? А вот, например, зачем нужен nullptr, и как компилируются эти ваши шаблоны, я бы почитал. На самом деле, штрауштрупа principles and practice 2015 года скачал, все правильно сделал?
Для начала - на случай своего ухода на фриланс - насколько фриланс на С++ перспективен?
Ну и второй вопрос - джуниор с Украины с образованием по программистской специальности и двумя годами опыта но опыта не особо удачного. Подробности описывать долго... Так вот - скажите критерии по которым можно определить потяну ли я на миддла? Хочу в общем-то съебать в Харьков(личные причины почему именно туда) из меньшего по размеру(и зарплатам программистов) города и думаю на какую зарплату я могу рассчитывать. Сейчас получаю 400 баксов, хотя не устраивает не столько зарплата сколько то что в последнее время меня перекинули разрабатывать на iOS и Objective-C из-за отсутствия проектов на С++.
>>708267 >насколько фриланс на С++ перспективен? Нинасколько. >Так вот - скажите критерии по которым можно определить потяну ли я на миддла Срать на образование и место жительство, ты миддл когда есть пара лет опыта и сам ты так считаешь. Подготовься к собеседованию, подучись ебать мозги - и ты уже мидл лел. >Хочу в общем-то съебать в Харьков Пытаться съебать без оффера - хуёвая идея, лучше сначала поищи области где есть именно подобные проекты по твоему вкусу, если тебе принципиально.
И да - единственная возможность фриланса на плюсах на апворке и всякой удалёнке. На второе (как возможно и на первое) без хорошего портфолио не попадёшь.
>>708288 >Нинасколько. Вот этот вопрос особенно интересует. Почему так? Мало проектов? А почему их мало? И если уж действительно так - то что из наиболее близкого перспективно для фриланса. Та же решетка перспективна?
>>708038 У меня вопрос - как оно не выругалось на "7, 481"? На всякий случай скажу что число с плавающей точкой вводится как "7.481". А оно у тебя делит на 7.
>>708372 Вектор требует копируемость и присваиваемость элементов. Зачем тебе вектор констант? Почему не констатный вектор? Ну или array попробуй, там, вроде бы, можно константы
Кстати, давно хотел узнать у местных - кто как относится к ПЕРЕперегруженным оператором вроде << у cout и всяких стримов, которые превращают код в растянутое дерьмище.
Мимо юзающий printf и перегружающий только арифметические операторы.
>>708536 Ох блядь. Если бы я увидел у себя в коде cout << hui << zalupa или stringstream piska; piska << "kek " << goabaw; - убил бы нахуй вместе с мамашей и обоссал бы обоих, скинув позже с балкона, ровно как и людей с ООП головного мозга делающих геттеры и сеттеры НА КАЖДЫЙ СУКА выпук, даже когда поле полностью редактируется извне и не модерируется классом.
>>708568 В кудебаге то же самое (разве что кутейные типы нормально форматируются на выводе). >>708575 Да тебе и в крестах никто не мешает на каждый выпук прописывать функцию toString в классе.
>>708577 > В кудебаге то же самое (разве что кутейные типы нормально форматируются на выводе). В кудебаге работает со всеми кутейными типами и классами, а в куте есть типы и классы на абсолютно все случаи жизни, а для своих просто перегрузишь этот стрим.
>>708379 Совершенно очевидно, что подразумевается тормознутость и ненужность float всюду, кроме эмбеддеда с действительно маленькой памятью. Вычисления-то все равно на даблах проводятся.
>>708606 >тормознутость и ненужность float Схуяли он тормознее? >Вычисления-то все равно на даблах проводятся Если ты их делаешь на х87, а не на SSE с флоатами.
>>708348 Да все норм, просто если бы у Лафоре был дабл а ты решил вписать флоат то это не сильно идея. Хотя флоаты конечно не стоит использовать, если нет каких-то особых причин.
>>708759 Плюсы ориентированы на производительность. Игры, бекенды, ембедед. Было есть и будет. Вопрос скорее к популярности этих областей. мордокнига на плюсах, азаза
>>708769 >>708769 Показывает ебическое нагромождение типов при шаблонах, и нужно развернуть 100500 вложений, перед тем как добраться до значения, не показывает значение переменных вне зоны видимости. Где вотч?
>>708854 >>708875 Нет, не так просто. Надо в настройках компиляции проекта изменить MD (для релизной версии) и MDd (для дебаг-версии) соответственно на MT и MTd.
Только начал изучать кресты, сильно не бить. Не могу понять на данном примере, вот если книжек 10-20 это терпимо. А если их 100500? Создавать 100500 переменных? А если изначально не знаю сколько будет книжек? Как тогда быть?
>>708851 Если дошёл уже до упражнения, где надо выводить значок фунтов, то расскажи как сделал, а то я каждый раз переключал локаль, а позднее вообще убирал русские символы из листингов.
Мне пару тредов назад посоветовали написать змейку, я наконец до нее добрался. http://pastebin.com/xgXFAx84 если у кого-то есть немного времени и желания покритикуйте, а то я, поди, лютого говна понаписал и даже не в курсе.
>>709357 > Я ж просто код просил покритиковать. Как ты предлагаешь "критиковать код", не собрав эту хуиту, не поработав с ней и вообще не зная, блять а компилится ли она вообще?
>>709300 1. direction надо через енум сделать. какие нахуй 0, 1, 2, 3? 2. placeFood: зачем юзаешь сяшный ранд, а, нигодяй? юзай плюсовый генератор 2.1 зачем делаешь for (auto x : snake)? ты же по значению x передаёшь, передавай по ссылке auto& x 3. .h это сяшные хэдэры. в плюсах они .hpp или .hxx 4. Game() ctor: чему не через лист инициализации заделан? 5. и зачем в мэйне создаёшь объект Game на хипе? у тебя джава головонога моска? делай Game game{}; и обращайся к методам через точку. и тогда delete gm не нужен
>>709385 > 3. .h это сяшные хэдэры. в плюсах они .hpp или .hxx Не пизди, hpp или hxx это что-то виндовое и нераспространенное. Везде и всюду .h В крестах
>>709455 > "единый" синтаксис инициализации через {} не сломан Че?
>boost идеален Чебля? Эта наркоманская хуита, которую читать невозможно, в которой ошибки на километры туалетной бумаги из шаблонного говна - это идеален?
Говноеды, поясните по-хардкору, почему СТЛ критикуют за то, что нельзя от контейнеров унаследоваться, мол деструкторы невиртуальные?
Нахуй вообще в данном случае для наследования нужны виртуальные деструкторы? Один хрен ни в векторе, ни в мапе нет ни одного виртуального метода. И нахуй надо наследоваться от вектора, что бы потом его удалять через указатель?
>>709470 для списка можно написать аллокатор, который будет намного дружественнее к кешу, чем однокусочный вектор, в СТЛ есть чтобы делать аллокаторы, можно даже на шаред поентерах
>>709629 Указатель - переменная, которая хранит адрес другой переменной. Указатель на int - переменная, которая хранит адрес другой переменной типа int.
>>709295 >Если дошёл уже до упражнения, где надо выводить значок фунтов, то расскажи как сделал, а то я каждый раз переключал локаль, а позднее вообще убирал русские символы из листингов. >>709608 >Только что дошел, и тоже хрен знает, как его выводить. >Ты-то как сделал, подробнее если?
>>709637 >Указатель на int - переменная, которая хранит адрес другой переменной типа int. Если у меня например [code] int *ptr [/code] то какой тут >адрес другой переменной типа int?
>>709578 Это петушки критикуют же, аналогично тому, как критикуют отсутствие рефлексии. Вообще, когда появляется желание взять и расширить не фреймворковый, а, сука, библиотечный класс, это сразу говорит о терминальной стадии ООП межушного ганглия и неумении в нормальные паттерны с композицией.
>>709578 Если деструктор не виртуальный и ты наследуешь от класа няша, свой класс тульпа, и работаешь с тульпой через указатель на няшу, то деструктор будет вызываться няшный. Соответственно няшный кусок тульпы удалиться, а все потомковские данные тульпы будут где-то висеть. Строго говоря, тульпа и не разрушена и не существует.
>>709653 Речь о том, что они тут не к месту. Можно эдак и на паскале процедурном писать и кукарекать, что вокруг просто все дауны и не понимают в паттерны.
>>709664 Это да, но такие ошибки из другой оперы же. Если, скажем, сделать [code lang="cpp"]void a = (void)(&a);[/code] , то все будет заебца, ибо внутри инициализирующего выражения уже работает декларация самого имени.
>>709670 > то все будет заебца, ибо внутри инициализирующего выражения уже работает декларация самого имени. Охуеть блять, и чо, можно написать int a = a?
>>709654 То, что ты говоришь - это понятно. Вопрос в том - нахуя работать с тульпой через указатель на няшу, если у няши вообще ни одного виртуального метода нет?
Например, вот внезапно захотелось сделать вектор::пуш_бэк_эррей( массив& ), хуй с ним отнаследовались, добавили метод май_мега_вектор::пуш_бэк_эррей. Нахуя нам вообще указатель на стд::вектор, если в нём нет нового метода?
>>709578 >Говноеды, поясните по-хардкору, почему СТЛ критикуют за то, что нельзя от контейнеров унаследоваться, мол деструкторы невиртуальные? Идиоты какие-то критикуют. Наследование он контейнеров не нужно.
>>709673 Я точно не уверен насчет того, будет ли это ошибкой/UB, но как минимум unspecified будет точно. А в случае с инициализацией адресом все абсолютно точно норм, адрес известен уже на этапе линковки.
Годная вещь - это Qt или phobos, последний вообще мечта.
А многословность - это огромный минус, на самом деле. Суть эволюции языков - уход от многословности, потому что ну блять - читать нереально, ни самому (когда вернешься переписывать через пару месяцев и уже нихера не помнишь), ни другим, кто твой код читать будет.
>>709645 Выводы у тебя не верные. Используя какой-нибудь адаптер, ты все равно логически расширяешь библиотечный класс. Тут суть в методах: хочешь ли ты делать это в рантайме и таскать RTTI со всеми объектами или ты хочешь хуячить максимально оптимизированный код. Тащемта рефлексия в C++ тоже будет.
>>709780 >Таки компилится, без единого варнинга. >>709782 >Не может быть без варнинга.
Ну вот, я же говорил: prog.cc: In function 'int main()': prog.cc:1:22: warning: 'a' is used uninitialized in this function [-Wuninitialized] int main() { int a = a; }
>>709783 Это ты тот даун, который любит ковыряться в говне, лишь крошечная часть которого в консоли ошибок будет выглядеть навроде 1> A=std::allocator<std::pair<const boost::interprocess::ipcdetail::sync_id const ,boost::unordered::iterator_detail::iterator<boost::unordered::detail::ptr_node<std::pair<const boost::interprocess::ipcdetail::sync_id,void >>>>> ?
>>709786 Энивей - у меня компилит без варнинга, сам видишь. Алсо - в результате 0, вроде компилер не должен инициализировать переменные, но видать на практике таки инициализирует?
>>709789 > у меня компилит без варнинга Потому что ты не включил их. >>709789 >Алсо - в результате 0, вроде компилер не должен инициализировать переменные, но видать на практике таки инициализирует? Не инициализирует.
Нихуя не понимаю в этом QML. Вот есть у меня два окна, получаем main.qml + main.qml.ui и foo.qml + foo.qml.ui Как мне из main.qml вызвать окно, описанное в foo.qml.ui ? Обращаюсь по айди, пишет undefined reference. Использую loader, так оно просто встраивает окно в main.qml, а не создаёт отдельно.
>>709781 Рефлексии не будет. Никогда. Будут только опциональные костыли, напижженные из полустандартных библиотек, ядро в этом плане никак не изменят. Можете скринить.
>>710438 Алсо странно, раньше окном становился любой корневой Item - Rectangle, да что угодно. А сейчас у меня получилось что-то увидеть только с корневым Window. В последних версиях Qt чего-то ужесточили?
>>710415 Ну диалог вроде не от окна наследуется >>710438 Да, это работает, но как сделать то же самое, при условии что в одном файле нужно создать экземпляр окна, объявленного в другом файле?
>>710476 > Да, это работает, но как сделать то же самое, при условии что в одном файле нужно создать экземпляр окна, объявленного в другом файле? Ну ты свой "экземпляр в другом файле" от Window унаследуй главное, а из какого он там файла - какая разница?
Нужно сделать кнопку неактивной, если набираю текст в TextEdit. В редакторе слотов отправителя делаю TextEdit, сигнал TextChange, принимает кнопка, а слота disable() нету, как это сделать в редакторе слотов? А не из программы с помощью connect.
Анон-программист оцени мой алгоритм, я правильно думаю?
Имеется 22 lvl, студент 4 курс до конца обучения еще 1 год специалист, устроен в одну контору где программирую, но нормальная работа начнется только в июлю, а сейчас просто хожу раз-два в неделю сижу за пекой и делаю тоже самое, что и дома разрабатываю графический интерфейс на Qt для баз данных.
Что хочу: стать первоклассным специалистом по C++. И вот возник вопрос как лучше этого достичь? 1. Читать книги, одновременно программировать проги? 2. Не читать книги, а постигать тонкости языка через разбор чужого кода? 3. Прочитать Струструппа, а потом двигаться по варианту 2?
В конторе, к слову, предложили вариант 2 аргументируя, что не стоит книгами забивать пока свою голову и лучше научится практическим умениям, а потом только уже копаться в тонкостях языка.
>>711050 >Mastering CMake Я хуею. "Мастеринг системы сборки". Не говорит ли это о том, что инструмент переосложнен? Так же как и гит. Охуели совсем по книге на каждую ссаку выпускать. Скоро будет "мастеринг линакс консол".
>>711101 >Скоро будет "мастеринг линакс консол" Ну привет, манька. Консоль - это просто интерфейс к системе, такая книга есть и дает знание всего линукса в деталях.
>>711101 >Так же как и гит Алсо книга довольно простая и разделы о интерфейсе пользователя занимают страниц 15. Вся остальная книга описывает внутренности гита и всякие фишечки про продвинутой настройке.
>>711221 Ещё вопрос подъехал: Хочу чтобы окно при закрытии не уничтожалось, а просто становилось невидимым. Типа: onClose{ visible = false } Как в этом случае сказать системе, чтобы она проигнорировала onClose, после того как я его обработал?
>>711235 Лично у меня из QML onClose никогда не работал, я всегда в крестах класс, унаследованный от QQuickWindow там событие отлавливал. Для другой цели, правда - чтобы выдать что-то вроде диалога "вы действительно хотите выйти".
>>711250 Ну тык, qml это одна из лучших вещей которые были созданы за последнее время. Жалко конечно, что Qt сделаны на базе крестов. Думаю, за 5-10 лет они непременно с них спрыгнут.
Есть тут кто юзает вижуал? Сделал простенькую программу для личного пользования, но не пойму как сделать релиз билд. Написано что: ... Всё понял, спасибо.
>>710855 1. учишься, читая чужой legacy-говнокод 2. становишься первоклассным специалистом по C++ 3. ??? 4. PROFIT! плюсы это всего лишь язык. а прикладная область у тебя какая будет, манька? мимо-мидл-21лвл
>>708529 Кроме того, создание видеоигр и нас самих делает счастливыми. Я не думаю, что написание компилятора может сделать кого-нибудь счастливым человеком. (с) Андре Ламот
Как правильно учить буст? Разбираюсь с исходниками эмулятора WoW 2.4.3, помимо всего прочего очень много кода на бусте, приходится очень много гуглить, каждый гуглёж заканчивается новым, всё нарастает снежным комом.
Связанная с техникой. Скорее всего создание интерфейса для радиоэлектронных устройств. К слову - это прибыльно на поприще программистов или есть более профитные области? В идеале хотелось бы уехать из своей мухосрани после окончания вузика, имея год работы в конторе, в ДС и там в течении пяти лет заработать на квартиру. Потом свалить обратно в свою мухосрань и работать удалено. Как думаешь реализуемо?
>>711313 Всё таки есть вопрос: если без установленного вижуала на компе запустить .ехе, скомпилированный с вижуала, компьютер требует вижуальыне библиотеки. А как сделать так, чтобы ростенький С++ код в .ехе запускался без них?
>>711577 Visual studio > 6 автоматом линкует с новыми версиями Си билиотек, можешь попробовать статическую линковку, но там может быть проблема с динамическими библиотеками которые потом захочется подключить. Либо юзать 6 вижуал студию она вроде нативный мсвцрт.длл юзает. Или какой-нить простой IDE и MinGW
>>711581 А без этих программ никак не скомпилировать программу? Я себе простенькую сделал для хапоминания и генерации паролей, и еще хотел бы её на линукс сделать.
>>711599 MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications, and which do not depend on any 3rd-party C-Runtime DLLs. (It does depend on a number of DLLs provided by Microsoft themselves, as components of the operating system; most notable among these is MSVCRT.DLL, the Microsoft C runtime library. Additionally, threaded applications must ship with a freely distributable thread support DLL, provided as part of MinGW itself).
вижу, что минигв бандл либы только для мултитред приложений.
Так так так, что тут у нас. А тут у нас CLion богомерзкий. Помогайте, посоны. Когда ввожу строку в нем, например: http://pastebin.com/yREBsUX0 Так вот, ясно видно там, как выстрелила строчка > background: # Как сделать, чтобы этот хуев придурок не вытягивал их туда?!
>>711666 Трипл не пиздит. Честно говоря, тоже так думаю. Вот все надеялся, что что-то новое выйдет, а за год сильно ничего и не поменялось. Видать, пока что лучше использовать VS с решарпером.
>>711674 >>711675 ругается на nullptr и 31 строку "i does not name a type" Насчет nullptr, я так понял что что-то с компилятором и надо что-то там подключить.
>>711680 Спасибо, но че то ошибка в логических операциях. Он должен выводить позицию максимального элемента, но он выводит не то. >>711681 Как исправить это в dev c++?
Продолжаю очень потихоньку изучать ООП Лафоре Сегодня попробую изучить, что такое отладка. Но сначала хочу узнать, что это за хрень на моем пике? Что за файлы не может найти? Программа ведь запускается и работает.
Дорогие мои Креставщяне, не поможете ли мне найти очень простую библиотеку для работы с изображениями. Или хотя бы даже не библиотеку, а просто реализацию подобной задачи: мне из изображения надо изъять информацию о каждом пикселе/точке, например, если бы он был представлен в виде RGB (B,G,R), то результатом библиотечной функции был бы указатель на массив указателей значений цвета этого пикселя/точки.
Например: ............................................................................................................................. // первый пиксель, который считываем, пусть будет закодирован цветами = 255, 255 , 255 int pixel_count = 1 // сколько пикселей считать
int mas = new int[pixel_count]; for (int i = 0; i < 3; i++) { mas = new int [pixel_count]; } mas = some_function_fromIMGlib(fname, pixel_count);
>>711954 Поправку сделаю и надеюсь, что он ничего не скушает: int '//' mas = new int'/*'[pixel_count]; for (int i = 0; i < pixel_count; i++) { mas = new int [3]; }
>>712122 Когда ты собираешь программу с отладочной информацией, компилятор кладёт (в данном случае, в .pdb = program database) имена функций, типы, структуры, имена и расположение переменных и прочую информацию. Называется это все symbolic debugging information или просто символы. Когда отладчик студии стартует, он пытается подгрузить .pdb для всех .dll и .exe, чтобы их можно было отлаживать с комфортом. Для системных .dll (ведь их собирал не ты) можно настроить подгрузку .pdb с сервера Microsoft, но у тебя она либо не настроена возможно, стоит погуглить _NT_SYMBOL_PATH, либо что-то просто пошло не так.
Поясните за буферизацию данных для вывода, о которой в каждой книге пишут. Что это за ебаный фингербокс? Например, если я пишу cout << "hui", то эти данные не должны выводиться, потому что они в буфере, который еще не заполнен. Однако таких задержек вывода я не видел ни разу.
>>712157 Сначала выводи много раз маленькие строки в cerr. Потом выводи тоже самое в cout. Сравни время. Длина строки 100 символов, а выводить 100000 раз. Перенаправь вывод в файл, но не в программе. Замерь время и сравни.
>>712164 Никогда им не пользовался и не хочу учить. Как это делать?
Погуглил. Mpv Вроде ffmpeg использует. Другие консольные плееры так и не понял что используют, но у них есть файл alsa.h. Можно что-то из этого использовать?
Сап, аноны. Не ругайте новичка, но есть одна проблема:
Ввожу в консолях размер матрицы nxm и предлагаю выбрать вводить матрицу самостоятельно или срандомить ее. Как защитить программу от долбоебов да-да, лабодрочер с преподом тестировщиком так, чтобы: матрица вводилась минимум 2х2 и выше, при выборе рандома и ввода (единицы и нуля соответственно) нельзя было вводить ничего кроме, иначе хуй
всякая хуйня типа ЕСЛИ ВВЕЛИ ЕДИНИЦУ ТО работает вроде заебись, но вводя всякие символы типа !"№;% и тд ошибки не получаю
Можно ли, не объявляя конструктора присваивания, присвоить ссылке на класс адрес на указатель на этот класс? Всегда думал, что можно, ведь мы мы просто используем адрес экземпляра класса, но пишет какую-то странную ошибку.
Простите, если непонятно написал. Есть класс Triangle и TriangleMesh. В конструкторе Triangle я указываю родитель TriangleMesh и использую некоторые его паблик данные.
Есть конструктор(опускаю остальные аргументы). [code] Triangle(TriangleMesh m){ mesh = m; } TriangleMesh &mesh; [/code]
Ошибки: error: use of deleted function 'TriangleMesh& TriangleMesh::operator=(const TriangleMesh&)' error: uninitialized reference member 'Triangle::mesh' [-fpermissive]
>>712248 Ссылки константные, объявив первый раз ссылку на объект ты не можешь "перенаправить" ее на другой объект. Можно заменить объект на который указывает ссылка другим объектом (для чего нужен конструктор присваивания). Ссылку можно инициализировать в конструкторе, в том числе из указателя. https://ideone.com/dDw6wG
Я правильно понимаю, что можно создать экземпляр дочернего класса только тогда, когда у родительского класса или нету чисто виртуальных методов или они все реализованы в дочернем? Но для обычных виртуальных функций не обязательно писать свои реализации?
>>712281 >>712279 Ладно, тогда такой вопрос: Есть Vector<ParentClass>. ParentClass - абстрактный, то-есть, имеет чисто виртуальные методы. И есть ChildClass - унаследованный от ParentClass, в котором все виртуальные функции реализованы. Могу я сделать push_back в этот вектор экземпляром ChildClass? У меня чёт не выходит. Экземпляр класса создается, а вот при push_back пишет: cannot allocate an object of abstract type 'ParentClass'. Может я должен какой-то хитрый каст сделать?
>>712289 Вектор не хранит элементы полиморфно же, а просто по значению. Виртуальность вообще не используется. В твоем случае при любой операции копирования/перемещения внутри вектора все элементы, которые есть в дочернем, но отсутствуют в базовом, срежутся. >>712303 не решит проблему, все равно будут дичайшие ошибки, и твое счастье, что тебе написало о попытке аллокации объекта ParentClass и копирования того, что пушится, во вновь созданный объект. А могло не повезти так, и просто срезать члены молча, порождая трудноуловимые баги.
Тебе нужно использовать unique_ptr или другую оберттку (ref, голые указатели, shared_ptr, самописные велосипеды...), чтобы задействовать полиморфизм, тогда все будет норм.
>>712358 > 2016 > только завозят filesystem > только завозят Parallelism > нет networking > нет graphics > есть сферические гармоники и гипергеометрические функции std::cout << std::top_kek() << std::endl; // Experimental feature `std::top_kek()`
>>712373 >2016 >маньки до сих пор путают STL со стандартной библиотекой >маньки нихуя не участвуют в работе комитета, но при этом требуют внедрения фич, как от майкрософта
>>712374 Не то, чтобы это была только STL, просто от комитета подгорело > 2016 > комитет состоящий из старперов > решает что имплементировать в следующем стандарте > ебля с шаблонами, или ебля с шаблонами
> 2527 год > концептов нет > модулей нет и не видятся > нам нужна обратная совместимость
>>712380 Манюсь, ты хоть один пропосал читал самостоятельно? Уровень проработки вопросов просто космический и, самое главное, никто не мешает тебе, дохуя критику, отправлять свои охуительные пропосалы и критику на обсуждение. Еще раз: фичи стандарта по сути пилят до 5 человек каждую. Обычно вообще по одному. Т.е. ranges один человек пилит в свободное от работы время, concepts - еще один, и т.д. и т.п. А ты просто слишком туп и ленив, чтобы участвовать в таком serious shit.
>>712387 Уровень проработки "бля, пасаны, а может ну нахуй это говно, 30 лет без него жили спокойно, а ещё обратную совместимость поломает, и добавит в язык 1,5 конструкций вместо 5к строк шаблонной ебли и падения компилятора с аут оф мемори и логов в 3 гб, ну нахуй".
Сколько они там не пропиздят ничего не изменится — контракты с концептам будут как везде если появятся, модель корутин как в шарпе не станет неправильной, а шаблоны будт с экспортом макросов по-умолчанию ради обратной совместимости.
Лучше вспомни сколько обсуждали вывод типов и что ихменилось. Зато 10 лет писали итераторные простыни на 5 строк кода.
>>712387 > Уровень проработки вопросов просто космический То есть реализация модулей от Шланга и Мелкомягких это дохуя юмор? Или там <= 5 человек? Бери и имплементируй, обратной совместимости все равно нет. Ах да, забыли про макросы, ну чтож, отложим на следующее десятилетие. Пропосалы по моим вопросам уже до меня выслали. И на реддите все обсосали. Я не первый и не последний кого удивляет особая упоротость комитета.
И твоя кстати. Ах да, модно же быть нетаким как фсе, и ты со своим опытом компиляции lab4.c сидишь тут и затираешь мне про работу комитета. > А ты просто слишком туп и ленив, чтобы участвовать в таком serious shit. Сперва добейся? Ну давай тогда ты похвастайся своим участием в жизни языка.
>>712578 Помню много лет назад не смог сдать какую-то лабу, так как преподаватель использовал линукс для компиляции лаб и system ("pause") не прокатила. Так я познакомился с кроссплатформенным программированием
Можно ли как-нибудь оттайпдефить свой unsigned-тип. Или использовать пробел в алиасе на другой тип? Есть хеддер библиотеки, в котором используется майкрософтский unsigned _int64 Хотелось бы не править хеддер руками, а либо средствами языка, либо средствами cmake сделать его равным uint64_t.
Можно сделать #define _int64 long long, но хотелось бы что-то более кроссплатформенное.
>>711830 Это для char (и вообще непонятно зачем, приписано, что только basic latin можно совать. Чем тогда от обычного char отличается?) В строках — с С++11.
>>712647 Как мне проитерироваться по строке "I am ероха", прочитав ее из текстового файла в UTF, и получить length=10, а не 15, и чтобы были 'е', 'р', 'о', 'х', 'а', а не мусор с кракозябрами?
>>712653 Использование указателей на базовый класс для указания на производные и виртуальные функции — это, собственно, вся суть ООП в C++. By design, так сказать.
Но в твоём манямире это называется "стрелять в ногу".
>>711101 >"мастеринг линакс консол". Смотря что понимать под этим. Если по стандартным консольным утилитам — то там можно и книги писать по их использованию.
>>712681 Ну смотри, Dev-C++ - это просто навороченный блокнот, у которого в настройках прописаны пути к компилятору. А компилятор лежит где-то недалеко от Dev-C++. Есть два варианта: 1. Качаешь отсюда http://tdm-gcc.tdragon.net/download версию поновее, устанавливаешь и перепрописываешь пути к компилятору в настройках dev-c++ (или компилируешь руками в консоли) 2. Лучше не стоит. (руками заменить TDM-Gcc из dev-c++ на тот что с сайта выше)
И подумай о том, чтобы перейти хотя бы на code;blocks.
Как сайт назывался, где можно решать задачки, и по мере решения можно получать что-то вроде уровней умения. А для поиска хотя бы самой элементарной работы нужно дойти до какого то уровня.
uint64_t P[300]; // массив пятых степеней, сам заполнишь int n[5] = {0};
int• Eu(int be, int en, uint64_t &S, int •n, int j) for (int i = be; i < en; ++i) //а может надо <= { if (n[4] == 0) return n; S = S + P; n[j] = i; if (i < 3) n = Eu(i, en, S, n, j + 1); else { size_t k = std::lround(pow(S, 0.2)); if (P[k] == S) n[4] = k; } S = S - P; } return n; }
>>712728 Ты на перле когда-нибудь писал? Там есть постфиксный if: a = 6 if b == 0 else 7; По сути эквивалено a = (b==0 ? 6 : 7); Тут та же фигня по всей видимости.
>>712738 >в питоне Кстати там такой бред. После пары часов бросил учить это говно. Инт всегда длинный. Табуляция вместо begin/end операторов. Тип переменные меняют во время работы программы.
>>712756 >Кстати там такой бред. Инт всегда длинный. Табуляция вместо begin/end операторов. Тип переменные меняют во время работы программы. Поздравляю с синдромом утёнка.
>>712756 Ты еще не дошел до того момента, когда обьект класса при создании может в итоге оказатся объектом не того класса, который ты указал. Один пиздец. Проходи мимо.
>>712762 > Ты еще не дошел до того момента, когда обьект класса при создании может в итоге оказатся объектом не того класса, который ты указал > Тип переменные меняют во время работы программы. Не оно?
>>712789 Пофиксил - P[N] надо в ноль сбрасывать. И n[4] проверять на неравенство нулю. И костыль пришлось добавить в 32 строке, раз ты S в самом массиве хранишь. http://ideone.com/vsWkWU
Есть задача, выглядит она примерно так. На входе дается число N, которое представляет собой число строк, которое последует после. Каждая строка представляет из себя ФИО кандидата, всего кандидатов 6. Каждый раз, когда встречается ФИО кандидата, ему добавляется голос. Нужно вывести голоса всех участников. Например Ввод: 3 Хуй Пидор Пидор Вывод: Хуй 1 Пидор 2
Задача очень простая. Но как ее решить если имена кандидатов нельзя сохранять в массиве? При этом все строки считываются только 1 раз.
Вообще это из ЕГЭ, я спокойно решаю, но тут решив обнаружил, что если сохраняю в массив, то нельзя. Вот решение http://inf.ege.sdamgia.ru/problem?id=6472. Я эти паскали хуескали не понимаю, но в пояснение написано что в массив не сохраняется, это единственная проблема, которую я хз как решить. Думаю вообще нельзя никакие контейнеры юзать.
>>713086 >>713087 Че бля не так? Сказали без массива? Че делать? Я пробовал рекусию написать, так вроде получилось, но я делал файл. Там есть массивы? Я эти языки не знаю, даже не пытался. Если что, простите.
>>713080 >но в пояснение написано что в массив не сохраняется Входные данные все в массив не сохраняются. То есть у тебя не будет массива строк Меньшиков Олег Миронов Евгений Меньшиков Олег Машков Владимир Меньшиков Олег А будет один с тремя именами и второй с голосами.
На самом деле без контейнеров можно. Имен же не более шести. Делаешь шесть строковых переменных и сравниваешь с ними ввод. Но это уже слишком говнокод.
>>713037 Нет. Бросил на четвёртом уроке. Или лекции не помню как там у них это называется. На курсере это недели. Не нашёл связь с крестами и перестал понимать что там объясняют.
>>713557 >про вебкамд знал, а о совместимости нет.. http://www.selasky.org/hans_petter/video4bsd/ > Webcamd is a small daemon that enables about 1500 different USB based webcam, DVB and remote control USB devices under the FreeBSD-8.0 and later operating system. The webcam daemon is basically an application which is a port of Video4Linux USB drivers into userspace on FreeBSD.
>>713572 Насколько раком нужно быть, чтобы скулить месяц, если мимокрокодил нагуглил всё, что нужно (в том числе примеры кода) и разобрася (концептуально) минут за 10-15?
>>713573 примеры были же не под webcamd и благодаря тому что я слишком часто вижу отсутствие совместимости линя с бсд, открыл для себя с++ тред. где не умеют делать лабы но гуглят точне меня мои друзья аноны. каюсь. я рачье
>>713577 >примеры были же не под webcamd Примеры могут быть под webcamd? webcamd это кусок сорцев ядра linux: драйвера для web-камер, тюнеров и ещё чего-то + реализация в userspace необходимых для этих драйверов функций ядра linux + вываливание получившегося v4l(2)-девайса с помощью CUSE в виде /dev/videoX.
Примеры работают с /dev/videoX, символьным устройством, и им пофиг на то, кто и как обслуживает это устройство, лишь бы оно предоставляло ожидаемый интерфейс.
>>712747 Имеется в виду второй х нахдится в новой области видимости. Но не еби голову, такое редко необходимо, хотя можно попонтоваться перед коллегами.
Ещё, например, в инициализации for цикла можно объявлять не только переменные, но и задавать новые типы.
Но самая самая пушка - это выброс исключений из конструкторов и особенно из деструкторов, зная все подводные камнни - устроишься на любую работу! Так в делегирующем конструкторе можно бросить исключение, а в вызывающем его обработать, смотриться реально круто.
>>713752 Мань, погугли условия GPL и LGPL прежде чем квохтать. Ограничения связаны с исходниками и объектными файлами, а не с запретом коммерческой разработки.
>>713752 У тебя устаревшие данные, Qt уже много лет как под LGPL доступен. > запрет на коммерческую разработку Закрытость кода ортогональна коммерчности разработки, коммерческий код можно и под GPL писать.
Сап, аноны. Наверное с этой лабой да-да лабы идут нахуй я всех уже заебал, но все же прошу помощи: Код написан, код работает, но, в случае, если N и M не равны, происходят косяки, а именно поиск ведется неправильно и только по первым N элементам. Как пофиксить?
И самый интересный вопрос для меня Как запихать это дерьмо в классы, чтобы все было красиво и заебись работало? В главной должна остаться только функция бектрекинга
>>713821 >test(); >не указан тип возвращаемого параметра >в родительском классе не указано, что метод виртуальный Virtual ставить вроде не обязательно, но будет не очевидно работать и вряд ли так, как ты планировал.
>>713934 Только не забудь что теперь ты не можешь напрямую (по индексам) редактировать захардкодженые строки с кирилицей, так как у них будут разные длины у разных символов, например "слово" 13 байт занимает, без учета нулевого https://ideone.com/4kNJ4z
Анон, нужно реализовать конструктор множеств чтобы выполнить лабу, но в самой лабе не дано напутствий по этому поводу. Подскажи наиболее практичные решения, чтобы велосипед не изобретать. Нужно для такой вот задачи:
Ввести строку символов. Напечатать гласные русские буквы в алфавитном порядке с указанием числа их появления в строке. Отдельно напечатать отсутствующие гласные
Ее сам решу, подскажите только по поводу множеств.
Посоны, поясните мне вот за такую штуку: очень часто в проектах вижу, что используют cmake, но он настолько всратый в плане синтаскиса, что иногда хочется вскрыть своей соседке вены. И есть по соседству qbs, который, в общем-то, даже как-то по-проще и логично выглядит, почему его не гоняют так, как cmake? Алсо, IntelliJ выпустила свое недоделанное отродье - CLion, так вот, там тоже используется cmake. Почему, черт подери, это старое говно мамонта не заменят на что-то более вменяемое?
>>714001 Потому что крестоёбы не могут без ебли в жопу. Предложи им выкинуть анальное шипованное дилдо, и использовать что-то нормальное, так их тут же обморок хватит.
>>714155 Я вот сейчас буду пердолиться и переустанавливать ШИНДОВСлинупс, 16.04 еще не вышедший - потому что этот ебучий qbs тут сука не работает, в 15.10 версия 1.4.2+dfsg-3, а эту ебань пофиксили в 1.4.2+dfsg-8, и разумеется - в репы нихуя не попало.
Всем хорош этот qbs, и синтаксис, и плюшки, кроме одного - не работает, блять!
>>714294 >714155 >Я вот сейчас буду пердолиться и переустанавливать ШИНДОВСлинупс, 16.04 еще не вышедший - потому что этот ебучий qbs тут сука не работает, в 15.10 версия 1.4.2+dfsg-3, а эту ебань пофиксили в 1.4.2+dfsg-8, и разумеется - в репы нихуя не попало. >Всем хорош этот qbs, и синтаксис, и плюшки, кроме одного - не работает, блять!
Ну и долбоеб. Нет чтобы из сорцов собрать, так лучше систему переустановить. Да еще и убунту нестабильную. Ну ты блять просто рафинированная qt-макака.
>>714301 >А этот 15.10 корявый меня уже вконец заебал. >Думает, что 16.04 внезапно станет дохуя стабильным. >Не знает, как установить собранный пакет в систему >Предпочитает переустановить систему, вместо того, чтобы разобраться.
Какой феерический долбоеб, ужас просто. Это не ты возмущался, что STL - говно, случайно?
>>714316 >А 16.04 это ж LTS, епта, на хуй путешествуй. Охохо бля. Дите, твой LTS в убунте в лучшем случае testing из debian. В лучшем. 14.04, например, стала юзабельной только через полгода после релиза. Лучше послушай серьезного дядю и не выебывайся: ubuntu в любом проявлении не является эталоном стабильности. Вместо того, чтобы по системам скакать, лучше поставь debian stable или аналог. А хочешь свежий opensource - собирай самостоятельно.
Анончики, помогите. У меня есть класс A class A { public: A(const color & c = color(1, 1, 1)) : _c(c){} protected: color _c; } и класс B class B : public A { public: B(const color & c = color(1, 1, 1)) : A(c) {} void changeC(){_c = color(0, 0, 0);} }
Почему я не могу поменять значение _с? Пишет, что _c const.
>>714424 В линуксе нет буфера обмена. Он предоставляется иксами и следовательно способ его использования зависит от конкретной оконной системы которую ты используешь. Читай документацию для своей оконной системы. Или лучше найди библиотеку (Qt) или утилиту (xclip, например).
>>714427 А утилиты вроде xsel/xclip каким образом всегда получают доступ к буферу обмена, независимо от DE/WM? Мой оконный менеджер не предоставляет никаких средств для работы с буфером обмена.
>>714427 Вообще, я хотел экстеншон под PHP написать (он не умеет работать с буфером обмена, а, к примеру, Python умеет), поэтому xsel/xclip не подходят.
>>714307 Ставь арч. Минимум пакетов, проблем нет, или гуглятся быстро, свежий софт в репах или в aur, работает пошустрее убунты и конпелять ничего не надо.
>>714435 > работает пошустрее убунты Ну пошли-поехали сказочки. Если че, на скорость работы убунты нареканий у меня никогда не было. И суть убунты - никогда не ебаться с софтом или чем угодно, потому что убунта - дефолтный линупс, под нее есть ВСЕ и официально.
Когда я захочу поиграться в роллинг - я опять поставлю опенсусю, она куда лучше этого школьного поделия.
Единственное что, мне нравится его вики. Но она просто вики по линупсу, без привязки к этому рачу.
Поясните за фриланс на кьюте: Является ли это коммерческим использованием, что нужно сделать чтобы этим легально заниматься, есть ли какие-то лазейки вроде старых версий и статических сборок?
>>714556 прочитай текст лицензии - а там есть комерческие версии - б GNU GPL ебанутая лицензия.. мимо каюсь за /dev/videoX иши для фриланса и отсутствия трабл с лицензиями BSD лицензию или что-то стороннее как в эклипсе, которое не обязават тебя писать писать лицензию
>>714572 Я и не думал, что с этим вопросом все настолько сложно Я во всем этом совершенно ничего не понимаю, никогда не пилил ничего платного. Можно немного проще, есть ли в qt способы написать коммерческий проект не покупая ничего? Если нет, то что лучше использовать для этих целей? Нет никаких гарантий, что эти вложения окупятся пока.. нужно же с чего-то начать?
>>714577 если тебе говорт -- напиши лабу то пиши в qt т.к. писать лабу это можно за денеФФку ивписываешься в лицензию. ... ты можешь написать на свободном qt всё и в триал версии все продавать думал, лайфхак.. но не думаю что новые владельцы qt (не нокия же уже?) тупые чтобы делать такую херню.. ... не так то просто всё с юристами..
>>714580 Я же говорю, я пробую себя на разных биржах Я уже понял, что можно провести не одно бессонную ночь, разбираясь с лицензиями Мне не сложно отвалит 30 баксов за любимый кьют, чтобы ко мне не доебывались потом В чем можно писать, чтобы не разбираться этим вопросом лицензий. студия? кодблокс? Я уже не знаю куда тыкнуть
>>714586 eclipse там другая лицуха.. и запретить в открытом Qt писать тебе нельзя. .. собственно я не уверен о динасической линковки длл для обхода лицензии я не слышал, но в теории код qt тогда не скрыт.. только твои прога к ним подсасывается и забирает либы. нов рашке за лицухи фрилансеров не ебут, не парся если нет 30$ на лицензию.. тебя не будут искать с оФФчарками по мухосрани. ты неуловимый Джо
Сап. Есть кусок кодаспизженого из инета по поиску простых чисел решетом Сундарама. http://pastebin.com/TcpWPYPV Собираю я его g++ --std=gnu++11 -Wall -O2 sundram.cpp
time ./a.out 100000000 > /dev/null real 0m9.817s user 0m8.588s sys 0m1.236s
Однако, если заменить i=i+1, j=j+1 на i=i+2, j=j+2, что, по логике, должно ускорить код за счёт пропусков чётных чисел, получается вот что:
time ./a.out 100000000 > /dev/null real 0m18.101s user 0m10.980s sys 0m7.132s
>>714709 >int a = new int [n]; >memset(a, 0, sizeof(int) n); >delete [] a; >using namespace std; >int a = atoi(argv[1]); >спрашивает алгоритмы в C++ треде.
Да ты, блядь, гонишь. Во-первых, нахуй тебе C++? Пиздуй в C тред. Во-вторых, пиздуй в алгоритмы-тред. В-третьих, твое предположение про двойной инкремент - бред, ты нихуя не понял этот алгоритм. В-четвертых, как следствие неправильной работы алгоритма - у тебя получается больше значений, в stdout выводится больше значений, отсюда разница во времени.
>>714745 >В-четвертых, как следствие неправильной работы алгоритма - у тебя получается больше значений, в stdout выводится больше значений, отсюда разница во времени. Видимо, так. Отсюда и дохрена времени в sys. Сам попробовал посмотреть генерируемый компилером код. Принципиальной разницы нет, просто константы в инструкциях удваиваются.
>>714791 Ну, ругается на отсутствие конструктора копий у unique_ptr. Не совсем из той лапши понятно, кому он нужен. (Возможно, класс, генерируемый из лямбда-функции, пытается обзавестись конструктором копий, но так как у него есть поле value с удалённым конструктором копий, он обламывается.)
>>714801 Где-то он пытается вызвать конструктор копий у объекта, полученного из лямбды. Конструктор копий пытается скопировать свои поля, а у value удалённый конструктор копий.
>>714816 >Ну и нахрена они выкатывали эту херню в с++14, если на практике ей пользоваться нельзя? А когда на практике были классы с конструкторами копий, у которых есть некопируемые поля?
> без копирования все равно нихуя не работает Если ты избавишься от аддикции от std::function, всё заработает.
>>714842 Ты тупорылый даун, который пытается использовать move-only тип как copy-constructable. Это логически не корректная конструкция. Свои кукареку засунь себе в жопу и иди дальше делай свою лабу.
>>714868 При чем тут коннект? Суть вопроса как сделать функцию из лямбды с захватом. Я нашел, как сделать перемещаемую лямбду. >Пикрил Ну это надо быть эпическим дауном, чтобы не понять, что "какого хуя не работает" эквивалентно "как сделать чтоб работало".
>>714876 На нем написан Qt и qml. Я хотел взять не цепепе, но там херовый биндинг к qml, конкретно в QVariant не реализованы QVariantMap и QVariantList - то, что часто юзается чтобы внутрь контекста данные пробрасывать.
Есть QAbstractListMode, но с ним много ебли.
Короче, было два стула - ебаться с гуем или ебаться с крестами.
>>714874 >Я нашел, как сделать перемещаемую лямбду. Чувак, у тебя и так была перемещаемая лямбда. Ты пытался поместить объект, который можно только перемещать, в объект, который можно копировать. Очевидно, что это нельзя сделать никаким образом, но если ты знаешь, что твоя лямбда будет храниться строго в одном экземпляре, то можно сделать хак, написав copyable-обертку и выполнять move в конструкторе копирования. Но что тут сложного, я так и не понял.
>Ну это надо быть эпическим дауном, чтобы не понять, что "какого хуя не работает" эквивалентно "как сделать чтоб работало". Каким же надо быть эпическим дауном, чтобы не понять, что если хочешь получить вопрос на А, то нужно и спрашивать А.
>>714884 > то можно сделать хак, написав copyable-обертку и выполнять move в конструкторе копирования. Но что тут сложного, я так и не понял. Собсно, это я и сделал.
>Каким же надо быть эпическим дауном, чтобы не понять, что если хочешь получить вопрос на А, то нужно и спрашивать А. Еще раз - очевидно, что суть вопроса была "как обойти".
>>714889 Короче, судя по стилю твоего письма, ты весьма малоумный студент третьего курса максимум. За 5 минут общения с тобой я понял следующее: - Ты не читаешь документацию - Ты агришься и обвиняешь всех вокруг в том, что не знаешь того, что написано в документации - Ты не умеешь ясно формулировать свои мысли и вопросы - Ты начал работать с инструментом (С++), не изучив его на должном уровне. Я полагаю, что это скорее тенденция, нежели единичный случай, и поэтому твоя жизнь будет довольно сложной и нервной до тех пор, пока ты не поймешь этот простой факт.
>>714905 Ничего не понимаю >If you are an individual working on your own applications to sell or for any other purpose, you may use the software to develop and test those applications. Раз я пишу сам, я могу использовать для разработки и отладки, окей А скомпилировать\продать?
>>714915 Ну хорошо, скомпилировать прогроамму для коммерческого использования я могу А монетизировать? Может, нужно завяление написать куда-то или еще что, я не хочу чтобы меня потом мс у меян два ляма отсудил Может, есть хорошая статеечка где-нибудь, поясняющая за лицензии и коммерческое использование компиляторов и иде?
>>714912 >Если вы являетесь физическим лицом, разрабатывающим собственные приложения для продажи или с какой-либо другой целью, вы можете использовать данное программное обеспечение для разработки и тестирования таких приложений.
Поцоны не бейте, лучше обоссыте. Я только начал изучать c++, написал в консоле калькулятор. В функции main весь код калькулятора. Как сделать её многоразовой? Калькулятор просчитывает одно действие, выдаёт ответ, а затем работа функции завершается. По ссылке текст кода, если кому интересно. http://pastebin.com/pR9X0YFS
Программач, как мне накатывать Qt на VS2013? Скачал сам qt c qt.io, скачал оттуда же qt_vs_addin, все поустанавливал, но проекты создавать все еще не могу.
Кресты хулящих за нехватку фич;
Терзая код профайлером пытливо,
Рантайма эффективность увеличь.
Пусть ненамного - важно лишь стремленье,
Тобою байтов взнузданный полет;
Смотри на них со страстью, вожделеньем,
Пусть на тебя глас Бьерна снизойдет.
Храни дизайн, не став рабом паттернов,
Тестируй, не завязнув в TDD,
В давнишнем коде вдруг почуяв скверну,
Не забывай о собственном труде.
Останься тверд, когда твой храм оплеван
Статьями не осиливших глупцов;
Когда стандарт меняется, и снова
Ты должен изучать язык с основ.
Будь непреклонен с джавапетухами,
Будь равнодушен к чистоте борща,
Будь щедр с одноглазых змей рабами,
Им либу бросив с барского плеча;
Будь терпеливым к платине вопросов,
К лентяям с говнолабами будь строг.
Тогда царем ты будешь меж отбросов,
Тогда, мой сын, ты будешь Крестобог.
Старший брат:
Предыдущий:
TL;DR
Q: Я хочу тотчас вкатиться, а разбираться буду в процессе. Что я должен делать?
Q: Не уверен, что хочу изучать C++. Как мне пощупать его без лишней ебли?
A: Читаешь эту книжку, смотришь упражнения из нее и суешь в онлайн-компилятор. Сообщения компилятора об ошибках копипастишь в гугл, ответы на возникающие у тебя вопросы ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее.
Памятка ньюфагу
Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешние сервисы.
FAQ
Мотивация
Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором.
C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов
простреливания ногирешения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искуственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства.C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.
Q: Но он же давно устарел!
A: Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по С++, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".
Q: Сейчас все пишут на %languagename, а кресты сосут у него!
A: Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд хотя это вполне возможно, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.
Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад!
A: Попробуй учебники, изданные после 2011 года, в которых рассматриваются возможности новых стандартов (C++11 и C++14). Эти фичи не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.
Литература
Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:
Для нюфань
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:
Кроме того, есть еще пара старых добрых учебников для ньюфагов. Часть информации в них устарела, но многие считают, что это компенсируется их большей, по сравнению с современными учебниками, понятностью:
Best practices
Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все:
Проектирование
Следует пролистать все перед переходом от лаб к написанию настоящего софта.
Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать:
Ахтунг!
Предыдущие два раздела дополняют, а не заменяют классические книги о лучших практиках разработки без привязки к конкретному языку (Макконнелл, Uncle Bob, GoF).
Справочники
Наиболее детальные описания языка. Удобно использовать как референс, читать от корки до корки не обязательно:
Кроме того, на ангельском доступны стандарты C++11, C++14, а также последняя версия черновика стандарта C++17.
Тонкости языка
Книги для тех, кто возлюбил кресты всей душой и желает углубиться в детали:
Отдельные аспекты
Читать по необходимости:
и других фич последних стандартов
для разработки многопоточных приложений
остальным частям стандартной библиотеки
язык программирования, чтобы ты мог
программировать, пока программируешь"
в ужас даже исходники boost::MPL
на C++. Для его чтения не нужно знать
мертвые языки, в отличие от этого вашего Кнута
https://goo.gl/yDuQgG (часть 5)
Другие обучающие материалы
Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс: раз, два, три
Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:
Софт и библиотеки
Q: Я готов начать погроммировать! Куда мне писать код?
A: На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:
https://goo.gl/WIPW9L (ангельская версия)
"sudo aptitude install codelite codelite-plugins"
для установки под *nix
Здесь ты можешь найти все остальные существующие IDE, если ни одна из вышеперечисленных тебе не приглянулась.
Разумеется, установка IDE вовсе не обязательна. Ты можешь использовать текстовый редактор в связке с каким-нибудь компилятором, выбросить мышку, отрастить бороду и примкнуть к Церкви Святого Столлмана. Но лучше тогда сразу отправляйся в тред сишников, если не хочешь быть обоссанным другими сектантами за использование б-гомерзкого C++.
Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу!
A: Без проблем:
Также не стоит забывать о том, что правильные посоны экономят свое время и нервы, используя мегагодные git и cmake во всех проектах.
Q: Мне надоело писать велосипеды, какие у вас тут популярные либы?
Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать?
A: Гляди сюда:
boost
Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.
Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.
Литература:
Qt
Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.
Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.
Литература:
https://goo.gl/toUDWc (исходники примеров)
https://goo.gl/qpkZFm (книга) +
https://goo.gl/LIIECh (исходники примеров)
Другие хорошие библиотеки
Несколько специализированных библиотек для часто встречающихся задач. Все — маленькие, быстрые и простые в освоении:
И еще куча библиотек на любой вкус.
Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
Предыдущие треды на архиваче
Старые ненумерованные треды
Отдельные Qt-треды