Вы видите копию треда, сохраненную 11 декабря 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Да здравствует ОП,
Что принесет нам срачи новые
Горенье и баттхёрт:
В тиши и у камина,
Или в лесах, снегах,
В полете с снежных горок,
Или в мечтаньях, снах.
Коммитет слагает главы
Величеству стандарта,
Сиятельству плюсов,
Замерзших, нахуй, в легаси.
Майкрософт, звеня, раскинет
Корутин пейперы в стандарт.
И модулями всколышет
Замерзших фичей страх.
За крестовым причащеньем
Уйду один в стандарт,
Где спрятан след UB
И прошлого неловкие асинки.
И концептами поманит,
И сопрограммами, тот стандарт.
Что на белом свежем пейпере
Навсегда останется в сердцах.
Старший брат: https://2ch.hk/pr/res/856777.html (М)
Предыдущий тред: https://2ch.hk/pr/res/840964.html (М)
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: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:
-
Для нюфань
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:
Автор(ы) Название Год Ссылка Бьерн Страуструп Программирование. Принципы и практика использования C++ 2016 https://yadi.sk/i/Yd6KKpLBqJSUr Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ 2014 https://goo.gl/kVaela Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u
Другие обучающие материалы
Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс: раз, два, три
Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:
- Годный блог, в котором все просто и понятно тян не нужны кококок борщ
- Блог с хорошо расписанными фичами новых стандартов
- Краткие описания библиотечных функций и контейнеров - на русском или более подробно на ангельском
- Блог Герба Саттера (на ангельском)
- Блог Скотта Мейерса (на ангельском)
- Блог еще одной тянки, много о Qt и оптимизации (на ангельском)
- Куча других блогов (на ангельском)
- Большой FAQ по C++ (на ангельском)
- Видео с CppCon (на ангельском)
Софт и библиотеки
Q: Я готов начать погроммировать! Куда мне писать код?
A: На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:
Платформа | Название | Описание | Ссылка |
---|---|---|---|
Windows | Microsoft™ Visual Studio® | Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда | https://goo.gl/qgAAc6 (русская версия) или https://goo.gl/WIPW9L (ангельская версия) |
Все | CodeLite | Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM | http://codelite.org/, "sudo aptitude install codelite codelite-plugins" для установки под *nix |
Все | CLion | IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует | https://www.jetbrains.com/clion |
Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
Скачал вторую из шапки книгу: Стэнли Липпман, Жози Лажойе и Барбара... - она подойдет для новичка, если я собираюсь программировать на линуксе. Могу я из-под прыщей кодить программы для виндоуса?
Точно, первый опыт хелоувордов был на в10 с вс, поэтому я не понимаю, как писать в блокноте, чтобы потом в отдельном компиляторе скомпилировать программу.
Плюсы - говно. Куча ненужной хуиты типа шаблонов и множественного наследования, нет делегатов, объектники от разных компиляторов бинарно несовместимы, уродский раздутый стандарт на тысячу страниц. Если бы плюсы не взяли за базу Си, то это говно давно бы померло.
Подскажите, как реализовать в ней геолокацию ?
>Есть убунта и я хочу вкатиться в с++. На чем писать код и чем помпилировать? Слышал про gcc и g++: они нормальные?
Значит Убунту тебе мозгов поставить хватило, а найти в чем код писать нет. Ставь студию в вайне тогда, пердолик
>Могу я из-под прыщей кодить программы для виндоуса?
С этого окончательно проиграл. Ты С++ изучать собираешься или тебе надо просто заебаться? Каждый блядский тред одно и тоже, каждый тред. Ньюфажики лезут изучать С/С++, но студия видимо слишком мейнстрим для них, нужно обязательно пердолиться с мейкфайлами и компиляцией из блокнотика.
Ну и почему же это единственный выстреливший наследник си, коих немерено? инб4: потому что ты далбич.
>обязательно пердолиться с мейкфайлами
И зачем нужно писать мейкфайл для компиляции хэловорда? g++ hui.cxx — слишком сложно для нюфага?
> Ну и почему же это единственный выстреливший наследник си
Зафорсили. А реально язык - кусок говна. Если откинуть божественное наследие Си, то останется один вонючий кал, вроде шаблонов, перегрузки операторов, изуверские способы функционирования конструкторов/деструкторов, отсутствие бинарного стандарта на типы, строковый тип с костылями, и.т.д..
Насчет шаблонов ты зря, без генериков совсем хуево. Лучше уж такие чем никакие.
С остальным согласен.
>отсутствие бинарного стандарта на типы
Ах да, и это необходимо для мультиплатформы.
Сделанной через жопу, правда.
> нет делегатов
А с чего язык должен поддерживать какой-то специфичный "паттерн проектирования"?
Ну так из-за наследия си всё говно и льётся. Ты пока что перечислил только нужные фичи. Кстати, что не так с конструкторами/деструкторами?
Не понял насчёт бинарного стандарта типов. Одинаковые размеры на всех платформах? Хуиток вроде cstddef как говна, и опять же — это из няшной проблема.
>>866612
g++ hui1.cxx hui2.cxx hui3.cxx hui4.cxx
инб4: вводить всё каждый раз тоже не надо, да.
>4 файла
>хэловорды
>мэйкфайлы
ловите поехавшего блять
алсо один хуй придётся разбираться с мейкфайлами, сборкой под разными системами и конфигурацией билдов, так что это райт вей
Пнятно, значит компилировать в g++, тогда где писать. Есть что поудобнее, чем стандартный убунтовский блокнот?
К слову свободная ось стоит скорее для обработки фотографий моего члена в рав, но снова появилось желание вкатиться в дев и поэтому пишу. Еще в каком-то гайде слышал, что для вкатывания в код желательно сидеть на прыщах и все пилить вручную. Еще мне нравится юнити, благо стоит не совсем некроговно и на все хватает ресурсов компьютера, а винда для игрушек.
Бамл
> Насчет шаблонов ты зря
Шаблоны - это такая же залупа, как и макросы. И претензия к ним точно такая же, как к макросам - не видно кода, который реально выполняется. Даже в отладчике
> Лучше уж такие чем никакие.
Страуструпа можно было простить в начале, когда он выдумывал множественные наследования. Но когда появилась и успешно стрельнула java, которая реально в продакшене показала, что нужно только одиночное наследование, а для остального вполне достаточно интерфейсов - уже не было никакого смысла поддерживать этот ебаный цирк с конями
>>866609
> Сделанной через жопу, правда
Тип int должен быть равен размеру регистра целевой платформы. Из этого всё и вышло. Никогда нельзя сказать наверняка, сколько у тебя будет в short int
>>866613
> поддерживать какой-то специфичный "паттерн проектирования"
Делегаты действительно позволяют использовать объект без знания его структуры. Не нужно, блеать, быть родственником, чтобы скоммуницироваться. Все это поняли, кроме долбонавтов из С++-комитета
>>866615
> Ну так из-за наследия си всё говно и льётся
Стандарт K&R Си - это 100 страниц с примерами.
В отличии от стандарта крестов, которые уже в первой редакции весили 450 страниц
> Кстати, что не так с конструкторами/деструкторами?
Неявные. Это - проблема в сопровождении.
Object t и Object t() инициализируются по-разному, нельзя заранее сказать, какие деструкторы сработают, не заглянув в код
> Не понял насчёт бинарного стандарта типов. Одинаковые размеры на всех платформах?
Все портируемые проекты начинаются с собственных велосипедов, описывающих элементарные типы. Второй, очень важный момент. Объекты, скомпилированные одним плюсовым компилятором, не получится использовать в проекте с другим компилятором. Из-за манглинга имен и отсутствия стандарта на бинарный объект внутри obj-файлов. Экспорт почти всегда си-подобный. И это не будет решаться никогда
> использовать объект без знания его структуры
Всмысли? Я использую кучу разных классов не зная их структуры. ЧЯДНТ?
Как минимум, тебе нужен хидер класса, чтобы его использовать. А делегат - это указатель на объект + указатель на метод. Т.е. тебе даже его хидер не нужен, чтобы вызвать. Например, если объект живет в какой-то закрытой либе. Это удобно
>И претензия к ним точно такая же, как к макросам - не видно кода, который реально выполняется.
Почему тогда я могу дебажить начинку STL? Сдается мне ты пиздишь.
>Страуструпа можно было простить в начале, когда он выдумывал множественные наследования.
Хорошо так говорить в 2016 году. Посмотрел бы я на тебя в 95 в время хайпа на ООП.
>Тип int должен быть равен размеру регистра целевой платформы.
А вот за это пожалуй я тебя обоссу, уж извини. Наиуебанская из возможных идей. Только переписали древнюю дристню, которая падала при переходе на х64, теперь ты предлагаешь какой-либо реюз кода между архитектурами вообще по пизде пустить. Лучше уж наоборот отменить int как нечистое наследие сишки и оставить всякие int8_t и т.п.
>Стандарт K&R Си - это 100 страниц с примерами.
Драфт С11 занимает ~600 страниц. Возможно в 80-х это было действительно так. Ну так первые стандарты крестов тоже меньше были. Такой дешевой демагогией нас не проведешь.
>Object t и Object t() инициализируются по-разному, нельзя заранее сказать, какие деструкторы сработают, не заглянув в код
Не понимаю чего тебе не нравится, все очень логично и понятно.
>Все портируемые проекты начинаются с собственных велосипедов, описывающих элементарные типы.
В стандарте есть переносимые типы. Скорее всего всем просто на них похуй. Как что-то плохое.
>Делегаты действительно позволяют использовать объект без знания его структуры.
Охуительные истории. std::function для кого в стандарт добавили? Это без учета бустовых и самописных. Доступных наверное года с 1998, если не раньше.
Шаблоны хороши, когда используются как простые генерики, но в остальных случаях ты прав хотя хорошие аст макросы — очень хорошая вещь.
Жява показала что лучше вообще нахуй выпилить наследование из языка, если не хочется оверинжинирить, страдать раком вроде object slicing-а и тормозить, вот что она показала. Но опять же, подобные избыточные вещи регулируются конвеншеном "чо и как используем" для конкретного проекта.
Про неявность конструкторов — в твоём примере во втором случае конструктор вообще не вызывается кстати, вопрос знатокам - а чо вообще вызывается?, а так если знать какие вообще существуют конструкторы проблем нет.
На бинарное несоответствие компиляторов, мягко говоря, насрать.
Перекатываюсь из прошлого треда
>Шаблоны хороши, когда используются как простые генерики
А что, есть дебилы которые используют для чего-то еще?
>2ch.mail.ru
Хотя о чем я, мда.
Потому что на редкость кривая хуйня, которая спровоцировала костыли вроде виртуального наследования в языке.
По правде в виду ненужности как и обычного наследования один хуй нигде не используется, кроме срачей.
> Почему тогда я могу дебажить начинку STL?
Давай, сходи подебажь её после gcc, сынок. Даже студия научилась показывать экземпляры коллекции примерно в 2012 году
> А вот за это пожалуй я тебя обоссу, уж извини.
Себя обоссы, ладно? Я нигде не писал, что это хорошо
> Не понимаю чего тебе не нравится
Неоднозначность создания объекта. Это хуево со всех сторон
> Охуительные истории. std::function для кого в стандарт добавили?
Нахуй он кому нужен, этот ебаный костыль? Во-первых, указатели на функции итак есть в стандарте, во-вторых, std::function для объектов специфицируется от определенного класса, а это - кусок говна, а не делегат. Делегат здорового языка не требует имени класса, если ты вдруг не знал. Только сигнатуру метода.
> а так если знать какие вообще существуют конструкторы проблем нет
Ты, надеюсь, понимаешь, что идея о существовании нескольких конструкторов сама по себе наркоманская?
> На бинарное несоответствие компиляторов, мягко говоря, насрать
Если писать хелловорлды или собирать всё из сорцов, то конечно, насрать можно на многое.
>>866654
Потомучто адовая хуита. Особенно, если вдруг кто-то захочет сделать наследование от двух классов, у которых в свою очередь, где-то был общий предок.
бля, почему звёзды не ставятся? Ну кароче там у меня перез "p" стоит "*";
>Ты, надеюсь, понимаешь, что идея о существовании нескольких конструкторов сама по себе наркоманская?
Да нет, не вижу ничего наркоманского.
>Если писать хелловорлды или собирать всё из сорцов, то конечно, насрать можно на многое
Если к хуйне придираться — то тем более. Приведи реальный юзкейс проблемы, как с этим ирл столкнуться можно. Все сторонние библиотеки поставляются либо исходниками, либо бинарниками под все компиляторы как тот же Qt. А тащить левую хуиту без поддержки и исходников — нужно быть конченым уебаном.
Можешь, в зависимости от типа pz (с различной семантикой, соответственно).
Потому что приоритет операторов.
pz++ дереференс указателя (pz + 1).
(pz)++ — инкремент значения, на которое указывает pz.
http://ideone.com/kFBawX
Точнее даже, •pz++ это инкремент pz и дерефернс этого нового pz, равного старый pz плюс один. В общем, в коде всё видно.
>•pz++ это инкремент pz и дерефернс этого нового pz, равного старый pz плюс один. В общем, в коде всё видно.
В коде видно, что это не так.
Да, обосрался я с порядком. Дереференс старого и затем инкремент, лишь последующие обращения будут указывать на (изначальный_pz + 1).
Так, как написано в том посте, будет работать •++pz.
>>866759
>И вообще ты там за границу выделенной памяти вывалился.
Ты про pz[1] после инкремента? Так это специально, чтобы показать, что произошло. (Можно было, конечно, сделать массив из трёх элементов, но выводишь лишь первые два, но не похуй ли, если вся суть в pz[0].)
>но у меня вместо цифр одни ascii символы появляются, можете подсказать что делать?
std::cout << (int) c
Буст
> Да нет, не вижу ничего наркоманского
Возможностью создать разные конструкторы для присваивания, копирования и создания обязательно воспользуется какой-нибудь фрик, обчитавшийся Александреску. А потом на сопровождении этого говна обязательно обдерут жопу сотни людей
> Приведи реальный юзкейс проблемы, как с этим ирл столкнуться можно.
Есть охуенная либа, собранная, допустим, интеловским компилятором. Допустим, это очень оптимизированный видеокодек, купленный за деньги. Никто, блеать, тебе не даст ни сорцов и не будет делать версии для разных компиляторов. Просто сделают обертки на Си и выдадут с хидер с extern "C". Это настолько типично для коммерческих библиотек, что я удивлен, нахуя ты это спрашиваешь
> либо бинарниками под все компиляторы как тот же Qt.
Видимо, ты кроме Qt ничего не подключал
>>866737
Учи свой любимый язык. Если деструктор не объявлен виртуальным, то потомки его не вызовут. Но если он объявлен, то будет вызываться обязательно. А бывает так, что деструкторы нужно вызывать избирательно. Явного вызова деструктора с варнингом о его отсутствии хватило бы для всего. Но нет, Страуструп пошёл своим путем
>Это настолько типично для коммерческих библиотек, что я удивлен, нахуя ты это спрашиваешь
Потому что в их случае проблемы и нет. Дали сишный апи — тем лучше, откуда угодно вызвать смогу.
>обчитавшийся Александреску
Так что наркоманского-то, шарпофрик? Единственное но тут — генерируемые компилятором, но у тебя всегда есть explicit которого требуют вообще все гайдлайны контор вроде гугла и мозиллы.
И да — Александерску, он про другое. ро ту самую хуёвую часть плюсов которой ты не видел, если считаешь вот это проблемами.
Нужно вызывать деструкторы избирательно — сделай отдельный метод как clear() в векторе и не еби мозга.
> Дали сишный апи — тем лучше, откуда угодно вызвать смогу
Т.е. экспорт класса - невозможен. Об этом я и пишу. В плюсах его не было, нет и не будет. Долбонавты из комитета лучше какой-нибудь буст-хуюст засунут, чем абсолютно необходимую для продуктового софта фичу (т.е. кросс-компиляторный экспорт классов)
> но у тебя всегда есть explicit
> сделай отдельный метод как clear() в векторе и не еби мозга
Вся суть плюсовых фич - сначала их запилить, немного подрочить, написать книгу, а потом запилить способы их обхода.
>Об этом я и пишу
Написал бы нинужна, но напишу так: это именно что говёное наследие си, которое будет исправлено только модулями стандарте так в 20-м, но вы там как нибудь держитесь, лол
Просто взять и запилить эту фичу они не могут из-за легаси, притянуть какую-то хуитку из буста которую один хуй никто юзать не будет понятно что легче.
А способ обхода был таки изначально. И если хочешь чего-то что изначально не задумывалось хуй знает сколько лет назад — не удивляйся что язык такими фишками не располагает в отличие от шарпов, сделанных с опытом плюсовых шишек.
Ты себе объем этой фичи представляешь? Она очень объемная в реализации и не очень полезная по сути. Потому что автору твоего видеокодека намного выгоднее сделать сишный интерфейс и продавать свою либу не только тем, кто пишет на С++, но и на Java, питоне и прочем говне. И, если ему так охота, то можно сделать открытый hpp враппер (точно такой же, какой потребуется для Java, питона и прочего говна).
C++ в этом плане ничем не отличается от любого другого языка, наименьшим общим кратным между всеми языками является C ABI, только и всего.
То ли дело некоторые другие языки, в которых ровно один компилятор, лол. Вот там-то такой проблемы точно нет.
>Object t и Object t() инициализируются по-разному
Вообще-то второе - это объявление функции с именем t, возвращающей Object.
> притянуть какую-то хуитку из буста которую один хуй никто юзать не будет понятно что легче.
А вот это намного удобнее. Сейчас лично мне буст уже не нужен, последнее, что держалось, было filesystem. И это круто.
> это именно что говёное наследие си
Отсутствие экспорта классов не может быть наследием Си. Потомучто в Си нету классов
>>866879
> Ты себе объем этой фичи представляешь? Она очень объемная в реализации
Она очень мала. Сейчас поясню. Например extern "C" говорит, что аргументы функции надо класть в стек задом наперед . Результат работы функции тоже будет на стеке. И этого хватает уже 30 лет для экспорта.
Точно также надо поступить с классами. Например заявить, что у методов класса extern "СPP_PROGRAMMACH" все аргументы кладутся на стек, первый аргумент - указатель на экземпляр класса, и ещё вот так должна быть сделана VMT, на неё указывает ещё какой-нибудь аргумент на стеке. Этого хватит ещё на 30 лет, люди наконец-то бросят писать сишные обертки.
> Вообще-то второе - это объявление функции с именем t, возвращающей Object.
В треде неосилятор. Все в Страуструп
>Отсутствие экспорта классов не может быть наследием Си. Потомучто в Си нету классов
Х И Д Е Р Ы
И
Д
Е
Р
Ы
Суть в том, что при попытке такого вот жопошного экспорта ты делаешь это со всеми кишками. В языке хватает корявого говна, не надо ещё больше необдуманно плодить.
>неосилятор
Тебе об этой хуйне пишет уже 3-й анон, что как бы намекает.
>>866891
Открой для себя какой нибудь Qt и перестань использовать оверинжинирнутые буст и стл корявый. он кроме более широких возможностей как минимум гарантирует нормальную имплементацию, без подводных камней и хуиток конкретной импоементации
> Х И Д Е Р Ы
Что с хидерами не так? Почему при сишном экспорте хватает только хидеров, а для плюсового нужны сорцы целиком, даже если поменялась только версия компилятора?
> экспорта ты делаешь это со всеми кишками.
Для такого экспорта хватить только хидера, чтобы можно было вызывать какие угодно методы, собранные каким угодно компилятором какой угодно версии. Это - как раз именно то, что нужно.
>Если деструктор не объявлен виртуальным, то потомки его не вызовут.
А, вот ты о чём. Не думал, что для кого-то это до сих пор проблема.
> А бывает так, что деструкторы нужно вызывать избирательно.
Например.
И, возвращаясь к >>866628
>Object t и Object t() инициализируются по-разному
Object t(); вообще не инициализирует никакого объекта, это декларация функции.
>А бывает так, что деструкторы нужно вызывать избирательно.
Нет не бывает. Мне вообще сложно вообразить зачем это может в понадобиться, кроме случаем какого-то кромешного говнокода.
>>866961
>Object t(); вообще не инициализирует никакого объекта, это декларация функции.
Типичный уровень "критиков крестов", еще и синтаксис учить рекомендует, лул.
>>866718
>std::function для объектов специфицируется от определенного класса, а это - кусок говна, а не делегат
Ты всегда можешь забиндить this. Странно что я тебе это объясняю.
> Нет не бывает. Мне вообще сложно вообразить
Нет, бывает. В том то и дело, что ты воображаешь о том, что я сам видел и поддерживал
> Ты всегда можешь забиндить this.
Ты наверное не понимаешь, что речь идет не о том, как вызвать метод у потомка от какого-нибудь класса, а чтобы вообще уметь вызывать метод класса, не имея даже его(класса) описания, а только указатель на экземпляр, да? Посмотри на кишки Qt, на которое тут дрочат вприсядку - там есть собственный урод, имитирующий делегатов, но всеравно требующий, чтобы метод вызываемого класса был потомком какого-то там базового класса Qt. То, что я хочу получать события от Qt в классы, которые никак не связаны с Qt и не наследуются от него - авторам Qt в голову не приходит.
>Типичный уровень "критиков крестов"
Где ты увидел "критика крестов", крестодаун? Это была критика "критиков крестов".
>>867008
>я сам видел и поддерживал
> кто-то написал говнокод
> ЭТО ЯЗЫК ВИНОВАТ!11
Ну ясно.
>Ты наверное не понимаешь, что речь идет не о том, как вызвать метод у потомка от какого-нибудь класса, а чтобы вообще уметь вызывать метод класса, не имея даже его(класса) описания, а только указатель на экземпляр, да?
Шарподаун думает, что шарп умеет вызывать методы у неизвестных ему классов через libastral. Шарподаун, просто у .NET CLR есть описание твоего класса, поэтому "вызов без описания" работает.
> кто-то написал говнокод
> Ну ясно, выбрось все и перепиши
Ну охуеть просто. Ты наверное участвовал в проектах, где всё написал сам? Делал что-нибудь, кроме своих лабораторок? Были люди, которые согласились тебе за твое говно заплатить?
>>867029
> Шарподаун думает, что
Причем тут шарп, дятел? Почему это умеют делать любые компилируемые языки с классами, кроме плюсов? Например, тот же древний Delphi?
>В том то и дело, что ты воображаешь о том, что я сам видел и поддерживал
Мои соболезнования, скорее всго ты работаешь с кодом дебилов.
>чтобы вообще уметь вызывать метод класса, не имея даже его(класса) описания, а только указатель на экземпляр, да?
Именно для этого и сделан std::function. Делаешь function от метода, биндишь this, передаешь третьим лицам которые об изначальном классе ничего не знают.
> скорее всго ты работаешь с кодом дебилов.
Скорее всего, ты не видел проектов размером более, чем 9к строк и которым более, чем 2 года. Тебе ещё предстоит многое увидеть, если останешься в профессии
> Именно для этого и сделан std::function. Делаешь function от метода, биндишь this
Теперь всю эту залупу передай в либу, написанную на другом компиляторе. А, у тебя ж все шаблонные чудеса происходят на этапе компиляции? Ах, какая жалость.
> Почему это умеют делать любые компилируемые языки с классами, кроме плюсов?
> Причем тут шарп, дятел?
Т.е. ты спрашиваешь меня, "при чём тут шарп", хотя сам не понимаешь, что он не при чём? Шарп я для простоты упомянул.
Теперь отвечу на вопрос "почему умеют": да потому же, что и шарп. Имеют жирный RTTI и жирный рантайм, умеющий лазать по RTTI. Чудес не бывает, бесплатно ничего не даётся.
> Например, тот же древний Delphi?
Понимаешь ли. Ситуация, когда язык пилит одна контора для одной платформы, как то Delphi для wintel, C# для .NET CLR или Java для JVM кардинально отличается от ситуации, когда язык делается независимым от платформы и вендора.
В первом случае хоть блядский цирк с конями в язык запиливай. Во втором случае — это не всегда возможно и желательно.
> Имеют жирный RTTI и жирный рантайм, умеющий лазать по RTTI
Вот давно пора вставить хоть какой-нибудь RTTI в стандарт. Пусть не все будут его использовать, пусть не всё можно будет экспортировать, но чтобы он был, чтобы язык можно было назвать портируемым. До сих пор пользуются экспортом 30-летней давности, пиля безобразные обертки. Это нужно было сделать ещё 15 лет назад. Но мудаки вместо 2-3 страниц описания способа экспорта, предпочитают в стандарты засовывать бусты, которые вообще будет невозможно собрать и использовать на половине плюсовых компиляторов.
>Вот давно пора вставить хоть какой-нибудь RTTI в стандарт
Хоть какой-нибудь там есть.
> чтобы язык можно было назвать портируемым
Портируемо пиши — будет портируемым.
> Хоть какой-нибудь там есть.
Никто им не пользуется. Потомучто в нем нету существенного
> Портируемо пиши — будет портируемым
java-господа тут могли бы тебе опорожниться прямо в рот. Почему, чтобы код, написанный на языке, который считается универсальным, был портируемым, нужно специально по особенному приседать? Может, что-то пора добавить? Что ты об этом думаешь?
>Теперь всю эту залупу передай в либу, написанную на другом компиляторе.
Пошли виляния жопой. Как делегат работает? Работает. О изначальном классе знать надо? Не надо. При чем здесь передача в либу? Ты б еще поплакался что по сети их нельзя гонять.
>Скорее всего, ты не видел проектов размером более, чем 9к строк и которым более, чем 2 года.
Да, да все студенты, один ты порох нюхал. Давай ты лучше приведешь пример когда нужно избирательно деструкторы вызывать, вместе посмеемся.
>Никто им не пользуется.
Рантайм пользуется.
> который считается универсальным
Кем считается? Универсальных языков нет и быть не может.
> Может, что-то пора добавить?
Пора. И пропозалы есть, работа идёт.
> Что ты об этом думаешь?
Думаю, бессмысленно эти проблемы обсуждать со школьниками, которые думают, что еда производится из холодильника, деньги из мамки а методы можно вызывать не имея определения класса.
> При чем здесь передача в либу?
При том, что более менее сложный проект состоит из компонентов, написанными другими людьми в другое время и может быть вообще закрытым
> Да, да все студенты, один ты порох нюхал.
Ещё раз: у тебя реально идиотские представления о чужом коде. В проекте, допустим, размером на 1,5млн строк, которому лет так 12-15 можно увидеть просто всё. Это - типичный С++-проект, который внедрен и продается. Там нет и не будет времени переписать даже 10%.
>>867087
> И пропозалы есть, работа идёт
Единственное, что порадовало за кучу лет - это std::thread. Но в половине моих рабочих компиляторов оно не появится никогда.
> методы можно вызывать не имея определения класса.
Делегаты в языках здорового человека -вызывают. Что с ними не так? Типичный use case: есть какая-нибудь охуенная апликуха, которая что-то считает. Сложная, богатая. К ней надо запилить графический интерфейс. От GUI нужно несколько финальных событий и пусть его напишут отдельно. Уместно к выходам гуя прикрутить делегаты и здорово, если гуй ничего не будет знать про классы мощной аппликухи, а классы аппликухи не будут наследоваться от какого-нибудь ебанутого CQtSuperMegaAnscestorOfAllObject.
Я тебе ещё раз говорю. Неявно описания всех классов загружаются в рантайм. В .NET VM или в JVM или ещё куда.
> классы аппликухи не будут наследоваться от какого-нибудь ебанутого CQtSuperMegaAnscestorOfAllObject.
> The object type is an alias for Object in the .NET Framework. In the unified type system of C#, all types, predefined and user-defined, reference types and value types, inherit directly or indirectly from Object.
То, что все классы наследуются от не менее ебанутого Object тебя, почему-то, устраивает.
Если тебе опять не нравится то, что я говорю про шарп, ок: в твоём блядском дельфи тоже ВСЁ наследуется от TObject.
Haskell - намного лучше.
В нём типы, а в ЦэПлусПлус - ООП, а ООП, как известно, ПАРАША!!
(Автор этого поста был забанен. Помянем.)
Я заметил что на этом сайте много годных статей которые гораздо проще, понятнее и конкретнее всё объясняют чем в любых книгах которые я читал, есть ли переведённые статьи с этого сайта на русский язык? Уж сколько десятилетий ведь прошло, неужели нету?
Так займись, ебать. Видишь же - ниша пуста
Ну во первых это был вопрос, есть или нету перевод этих статей, мне слабо верится что это до сих пор не перевели. Даже если не перевели и этим займусь я, то куда я это выкладывать буду?
У крестов своя ниша. Производительность крестов нахуй не сдалась практически нигде, кроме как игор, эмбеда, и всякого спец-софта
Топовые игры топовые не из-за крестов, а из-за шейдеров и художников. А так хоть на Java перепиши.
>Игровые движки, исключительно редкий случай, когда специфика предметной области более-менее укладывается в ОО-парадигму.
Не укладывается. Современные движки data-oriented, и пишутся на С++ чуть выше сишки.
>неудачная ОО-надстройка над СИ
За счет шаблонов там можно использовать вполне нормальное ООП с миксинами. Удобнее джавовского.
ты на си ебанешься писать хоть что-то сложное. Оно очень быстро превращается в нечитаемый пиздец
>ты на си ебанешься писать хоть что-то сложное
Ядро ОС - достаточно сложный проект?
>Оно очень быстро превращается в нечитаемый пиздец
С крестами абсолютно та же фигня может быть. Только с С++ еще можно с десяток несовместимых языков наизобретать и запихать в проект, а с си сложно что-то замудрить.
Кресты не хрень, шаблоны и static time duck tymping - это гениальнейшее изобретение, которого нет практически нигде. Под ту же CUDA ни на каком другом языке писать не удобно.
Твои швабодные ядра пишут на сишке всем миром десятки лет, и то постоянно что-то ломается в них. А коллектив из десятка хорошо организованных крестоблядков напишет в недрах корпорации проект такого же уровня за несколько месяцев.
А потом компания обанкротится.
>Наверни Template Haskell и охуей.
Ты откуда вылез, из 2010? Хаскель он блядь рекламирует в С++-треде. Нахуй никому твой хаскель не нужен, и не нужен будет, потому что говнище это ебаное. TH так тем более, он не нужен самим борщеедам.
>А коллектив из десятка хорошо организованных крестоблядков напишет
А потом десяток других дополнит, а потом придет кто-то еще и поправит, а потом туда придешь ты, и поймешь, что проще повеситься, чем это говно ковырять.
>>867424
Ну охуеть, че вы так возбудились-то?
>>867430
Из-за крестоблядков перезвоним треды и появились.
Что значит "не видел"? Я произвожу это говно 8х5 в промышленных масштабах.
>Ну охуеть, че вы так возбудились-то?
Ты пришел в крестокред, а не я пришел в хаскель-тред. Хаскель-тролинг устарел еще до того, как ты начал программировать. И тут ты удивляешься, а хули тебя хуйцами кормят. Ты быть хоть придумал что-то нормальное.
>Сказал хаскель
>@
>Иди нахуй
Понятно короч, местные коестовыблядки ничем не отличаются от местных же хаселофорсеров. Ебанутые неадвекваты, исходящие на визг при отсутствии аргументов.
Это называется парадокс Блаба.
Где-то была статья про этот парадокс и раст, от одного из разработчиков тайпскрипта, там основная часть в том, как он пытался доносить людям новые вещи, очень рекомендую.
Внимательно прочитай 5-й пункт памятки ньюфагу. Думаешь, для кого он был написан? Для таких идиотов, как ты, которые заходят в тематический тред просто покормиться.
Парадокс блаба - это про лисп, из статьи 2001 года. Только, внезапно, лисп как не был нахуй нужен в 2001, так и не нужен в 2016, а кресты как были нужны в 2001, так и нужны в 2016. Вот такой вот парадокс.
Из 2001 года и до сих пор верно. А ты, судя по всему, так и не понял о чём она если пишешь такую хуйню.
Она основана на ложных предпосылках, что языки ранжируется по фичастости, программист на более фичастом языке круче. Из которой следует, что лисперы - боги программирования (ведь фич в лиспе жопой жуй), а не-лисперы, нихуя вообще в этом мире понять не могут, ведь они не знают всех фич лиспа.
Только, дело-то какое, языки не ранжируются по фичам. У С++ фич больше, чем у С, но это не значит, что С++ лучше всегда и везде. Это разные языки с разными нишами.
Второй момент, что не все фичи одинаково полезны, а некоторые и вовсе взаимоисключащие. Поэтому никакого ранжирования и нет. Лисповые макросы, например, - это мечта аутиста, желающего замкнуть всю разработку на себя. Они - говно. И лисп - говно. Поэтому творение автора было переписано яху на С++. И сейчас никто лисп не использует, хотя казалось бы, в корпорациях могут позволить себе отделы яйцеголовых, но даже tensorflow написан почему-то на питоне. Примерно то же относится к хаскельной изоляции IO. Говнофича, Scala это доказывает.
Вот эти два момента перечеркивают эту статью нахуй. Если в 2001 это было не так очевидно, то сейчас-то хули, пора бы уж поумнеть.
http://pastebin.com/Cf9K9q9P
т.е. мне нужно наследоваться от базового класса находясь внутри него, выставлять классы Female и Male наружу не вариант т.к. очевидно что их там будет много одинаковых.
Вкладываю класс Male или Female в класс Human и ": public Human" загорается красным "недопустимый неполный тип".
public class Human
{
private const int basehp = 20;
class Male : public Human
{
}
class Female : public Human
{
}
}
class Male : public Human
{
};
Не очень похоже на C++, ты бы хоть почитал как это все делается, тогда и проблем не будет.
проиграл с этого кода
лолшто
код больше похож на некую смесь сижки с пускулем, классы как минимум объявляются так:
// объявление классов в С++
class /имя класса/
{
private:
/ список свойств и методов для использования внутри класса /
public:
/ список методов доступных другим функциям и объектам программы /
protected:
/список средств, доступных при наследовании/
};
класс в классе это мощно было
От класса можно наследоваться только после объявления, ниже }; если он не темплейтный.
Ты так нихуя и не понял. Печально.
>статья про этот парадокс и раст, от одного из разработчиков тайпскрипта
Смешно там - он глядит на раст с перспективы С++, а Александреску - со стороны D. Александреску верно замечает, что раст "skipped the leg day", поскольку кроме борроу чекера в расте все очень куцее по сравнению с ди, а автор пытается в ответ сравнивать раст с крестами. Становится ясно, что у него тот самый blub paradox, поскольку ди он не видел, и с его перспективы на раст взглянуть не может.
>но не всегда это выглядит красиво и понятно
Пока лямбы не завезли, все так их и делали, инплейс структурой.
На ди и не надо смотреть — это просто красивые плюсы со всякими хуишечками. Там вообще нихуя отличий кроме синтаксического сахара. ну да, а ещё олександерску работает над О-нотацией в, блядь, языке, когда сам язык до сих пор сырое говно. Как бы намекает, кто же тренеровки ног пропускал-то
Везде, где есть делегаты из коробки - есть свой урод, но встроенный в язык.
Собственно в qt ради этого и есть QObject.
>На ди и не надо смотреть — это просто красивые плюсы со всякими хуишечками
Про раст можно так же сказать. Но им реально неудобно пользоваться без миксинов, нормального метапрограммирования и с ебущим мозг чекером. Он скорее ближе к сишке, чем к ди и крестам.
Хедер почитай, там же всё понятно какие методы вызывать чтобы у карты изменить координаты.
Если твой вопрос заключался в том, как получить координаты в Qt - то используй http://doc.qt.io/qt-5/qtpositioning-index.html
D ахуенен.
Единственный минус D - что его не поддерживают многомиллионные компании, и поэтому на нем никто не пишет.
Единственный минус ди — отношение к нему его же авторов. Один не хочет выбрасывать свой хуёвенький бэкэнд любимую игрушку, второй работает над О-нотацией в языке и тд.
>>867653
Я же говорю — просто сахар над костылями из плюсов, миксины всё те же корявые шаблоны с красивой записью.
Посмотри например на какой нибудь libdparse, из dcd там сплошь и рядом миксины — и просто сравни это с парсером на любом языке с адт, макросами и паттернматчингом, тем же парсером компилятора раста на расте. %%не настолько кошерно как в окамле с полноценным хиндли-минлером, но всё равно другой уровень.
Попытки оставаться с плюсами даже таким образом — это и есть парадокс Блаба.
>парсером на любом языке с адт, макросами и паттернматчингом
Да, все любят использовать функциональщину для компиляторов. Но это нишевая задача, поэтому кроме компиляторов на функциональных языках мало что пишут. На той же скале в реальных задачах полиморфизм используется гораздо более широко, чем паттерн матчинг.
Парсеры — нихуя не нишевая задача, и ими применение всех этих фич не ограничивается. Как можно связать паттерн матчинг с полиморфизмом? Это вообще нонсенс.
>Парсеры — нихуя не нишевая задача
Ты в какой-то совсем другой сфере крутишься видимо.
>и ими применение всех этих фич не ограничивается
Конечно, нет. АДТ и матчинг - удобная штука, не спорю.
>Как можно связать паттерн матчинг с полиморфизмом?
Выполняется разный код в зависимости от типа и там и там.
Подскажите, как отметить на ней точки? Нужно рисовать при помощи QPainter поверх карты, а потом менять тайлы ? Или что?
Картинка для привлечения внимания
Ди - это не плюсы, это хуита со сборщиком мусора. Раст в этом плане хотя бы пытается, ди же метит в нишу удобного для С++-программиста сишарпа. Но С++-программистам не нужен шарп.
>Выполняется разный код в зависимости от типа
Если есть явный матчинг типа, то это не полиморфизм.
Это ad-hoc полиморфизм, самый лучший полиморфизм.
Парсеры - нишевая задача для крудошлепов. У нормальных людей парсеры всего, чего можно, уже написаны.
Вот обработка AST, да, часто встречается, и без паттерн-матчинга не очень.
Инбифо: не спрашивать советы на двоще
сделать бочку@соснуть хуйцов@свичнуться на хаскле
Только начал изучать C++. Эта задача выложена в учебнике для ньюфагов Страуструпа на первых страницах. Неужели нет способа проще?
Ну, допустим, это будет не в алфавитном.
БАМП
std::set еще проще, если слова не повторяются.
> Наркоманские конструкторы.
Не используй.
> Множ. наследование - хуита
Не используй.
Ведь в крестах "не платишь за то, что не юзаешь". Как вообще можно критиковать излишиства в виду этой пафосной фразы.
Я не знаю с чего начать. У меня paralysis by analysis когда думаю свою хуйню написать. А писать всякие олимпиадки, оно нужно вобще?
Зайди на апворк и посмотри что людям нужно, что-то подобное запили.
С++ устарел и не моден.
С какого хуя надо после переопределения оператора () писать хуй()(x), а не хуй(x)?
>>868632
А, и правда, а я и не подумал, что первые скобки - для конструктора.
А если объект создан, то уже всегда пишется хуй(х), да?
Да
Собственно, вопрос по 24-ой строчке, почему место вставки в указано end()? new_lower_chunk.data — это пустой список, .begin() == .end(), так что разницы, собственно, нет, но ведь в точно такой же ситуации на 17-ой строке, вставляя элемент в пустой result, было написано result.begin(), так что это не просто его стиль такой. Чем же он руководствовался, в чём семантика использования new_lower_chunk.data.end() в той ситуации? Или я зря вообще думаю над этим?
Просто ты туповатый, это бывает. Разрабатывай очко крестомышление велосипедами на шаблонах шаблонов.
>Просто ты туповатый, это бывает
Ставлю очко Страуструпа, что ты обосрёшься на чём угодно сложнее hello world-ов. Небось даже что такое ADL не знаешь.
Это чё, способ определять какую из перегруженных функций вызвать?
Пиздец, понапридумывали ненужных терминов, вместо того, чтобы убрать всякое гавно.
> Разрабатывай очко крестомышление велосипедами на шаблонах шаблонов.
Сложности программирования на темплейтах говорят только об их слабой выразительности: для тривиальных действий нужно написать десяток темплейтов.
И гордиться умением кодить на них это как гордиться умением писать нетривиальные программы на brainfuck.
Telegram desktop
В книге поясняется, что мол потому, что float гарантирует точность лишь шести значащих цифр. Но блядь там же всего 4? Получается, что типа float должно хватать. В чем подвох?
[code]
#include <iostream>
using namespace std;
int main()
{
float a,b;
cout.setf(ios_base::fixed,ios_base::floatfield);
cout<<"a: ";
cin>>a;
cout<<"b: ";
cin>>b;
cout<<"a + b = "<<a+b<<endl;
cin.get();
return 0;
}
[/code]
viber desktop, на маке по крайне мере точно. При чем скорее всего open source версия
Battle.net агент, ЕМНИП.
Autodesk Maya, Unity (которая оболочка убунты), всё KDE со всем софтом, UI смарттелеков LG (которые на webOS, весь интеловский тулкит для разработки и профайлинга (которые Intel Studio, Advisor, Profiler и тд), все AMD-шные софтины: от настройщика GPU для пользователя до CodeXL и ещё буквально тыщи свободных и коммерческих софтин, которые как гуглятся по спискам вроде https://wiki.manjaro.org/index.php?title=List_of_Qt_Applications .
Всё очень сильно изменилось, я работал со старыми плюсами. старой разработкой, и со специфической штукой, RSARTE, где плюсы просто пара строчек кода, и мне надо было разбираться в продукте, а не кодить.
Я сделал небольшой фичер и понял как я дико сосу. Ибо реквайрмент к коду далеко не тот, который был даже в 2013, когда был только свой фреймворк для теста, задебажил, хуяк, хуяк и в продакшн.
Теперь блядь, надо написать современно на с++11, прогнать clang static code analysys, прогнать lint, purify, purecov, все заюниттестить gtest, valgrind и я тут понял что соснул. Я не умею писать качественный софтвар и не умею все это делать.
Есть у кого может какие книжки или гайды для быстрой пробежки по этим всем технологиям, ибо та же документация по том, как писать фильтр для линта или валгринда, это блядь сотни тонн инфы, есть путь более краткий, нежели курить мануалы лет 5?
Из перечисленного курить манулы 5 лет по мне нужно только для с++11 и валгринда.
Какая-то там сложная инструкция. Что ввести в консоль чтобы он сделал пиздато?
Надо сначала конфиг написать.
https://github.com/uncrustify/uncrustify/blob/master/documentation/htdocs/config.txt список настроек
Чё-то сложно, проще просто код сразу красивым писать.
Да, жаль, он не умеет в C++11. А других таких настраиваемых инструментов нет. clang-format не умеет нихуя, astyle умеет ещё меньше чем clang-format.
У меня кстати кланг даже компилировать не хочет и жалуется на что-то в файле iostream в папке /gcc/include/
Можешь попробовать тот же astyle. У него есть набор пресетов. Типа --style=kr и ещё какую-то опцию, чтобы он табы вместо пробелов использовал.
Но максимум что он сделает — расставит фигурные скобки с сделает отступы. Никаких изысков типа переноса аргументов функций или выравнивания по бинарным операторам.
чувак, ты работаешь в эриксоне
блядь, да ты бог по сравнению с местными уебками, что bsort на крестах осваивают
кого ты собрался здесь спрашивать, лол
+1
У меня сейчас стоит CLion, который использует встроенный эппловский компиллер (xcode) со всеми его вытекающими.
Он сейчас как я понял довольно сильно отличается от обычного g++ линуксового.
Как мне разрабатывать клевый кроссплатформенный с++ код на макосе? Есть идея даже просто докер юзать для компилленга.
Или просто забить и писать под эппловский компиллер?
Конечно с расчетом что с моим кодом будут работать ребята с линукса и т.д.
*писать
Он уже занят.
как я понял надо юзать cross gcc. остается только понять как все это грамотно сделать.
Ты долбоёб или что? У тебя из коробки последний clang с поддержкой последнего стандарта, с автоматическим автообновлением и поддержкой вендора, но нет блядьь, хочу писать хуйню и жрать говно.
Чё нервный такой?
ты мне ответь. есть ли разница между gcc, встроенный в макос и gcc.gnu.org ?
что ты тут кукарекаешь.
и если я буду писать со встроенным тулчаином код, соблюдая все стандарты. скомпилится ли он линуксоида?
ну так речь идет о gcc
-std=c++11 в ключи компиляции, мань. На линуксе с GCC тоже ошибка будет.
ничего не изменится
А весь пак выложить можешь?
Спасибо
gnu nano - консольный текстовый редактор с подсветкой синтаксиса
mc - midnight commander - консольный файловый менеджер, который удобно юзать
Гуя у меня нет и монитора тоже - сижу удаленно через ssh сам на windows 7
Спасибо.
Кстати, в C++17 завезли auto в шаблоны. Вместо
template<typename T, T t>
можно писать
template<auto t>
Как я понял мне нужно разобраться что такое классы и запилить рекурсивный поиск с итератором.
В плюсах шарю на уровне циклов и ввода/вывода массивов, что делать и читать? Желательно подача инфы для мммаксимум тупых вроде меня.
может кто напишет мне, няшки?
Как же непривычен gcc на арче по сравнению с g++ бунты. Еще я опробовал gnu nano с подключенным синтаксисом. Синтаксис включен, но все руками вводить заебывает, неужели там нет автозполнений? Например я открываю скобку и у меня открывается вторая, а курсор между ними? Может я чего не так включил или что-то упустил?
Не то.
Сделал такую штуку, но пока просто выводит дерево заданного каталога.
[code]#include <stdio.h>
#include <dirent.h>
int main()
{
DIR dir;
struct dirent entry;
dir = opendir("C://test");
while ( (entry = readdir(dir)) != NULL)
{
printf("%s\n", entry->d_name);
};
closedir(dir);
return 0;
};
[/code]
boost mpl
Теперь гугли что такое рекурсия.
auto name = json["strings"]->object()["name"]->string(); Вместо auto name = json["strings"]["name"] как хотелось бы. %%Пока писал пришла идея сунуть operator[]() в Value). Есть идеи как это все получше сделать или это нормально для языка со статической типизацией? Алсо будет ебля с указателями *Value в контейнерах которые надо будет кому-то уничтожать. Если я, скажем, наследюсь от вектора и пишу самоуничтожающийся контейнер и запрещаю операции копирования (только move, только хардкор), нормально будет?
Вот только сам попробовал и получилось, хотел отписаться, что сам до этого дошел. Тогда поясни за gcc - Что он делает?
Хм, просто где-то читал, что везде кроме бунты gcc компилирует шарп и кресты. Спасибо.
С или С++
И вот тут я начал теряться. Вроде как Си это чуть ли не основа всего сущего, альфа и омега, но с другой стороны он как я понял устарел, а вот кресты вроде живее всех живых.
А потом аноны, плиз хелп.
Есть ли смысл сейчас вообще изучать Си (не кресты), а если и есть, то стоит начать с С++ или Си?
С меня как обычно, тонны благодарности и нихуя.
Правильно ли я понимаю, что кресты это офигенный язык кучей возможностей и немного сложноват для мимокрока, но зато откроет огромные перспективы для него (с учётом, что web меня не интересует )
>офигенный язык
Нет.
>немного сложноват для мимокрока
Сложен он не столько в обычном смысле, сколько в том что вкатится не сложно — сложно написать что-то рабочее без триллиардов багов.
>кучей возможностей
Да.
>но зато откроет огромные перспективы для него (
Откроет возможность найти работу именно в этой области и участвовать в проектах на нём, ни больше ни меньше, как и остальные мэйнстримные языки.
Оба говно. Бери хаскель.
Это плохой язык для обучения программированию. Это хорошая лошадка для зарабатывания денег, так как инфраструктура меняется медленно, а работы много. Начни с чего-нибудь другого.
HTML5, python, потом, через годик, С, и только потом С++, причем сразу С++11 или какой там стандарт будет.
Нет, преимущества в следующем:
1. Обучает важности текстовых представлений и пониманию независимости редактора и IDE от языка.
2. Интерпретатор есть на любом компе, ничего не нужно ставить, особенно по сравнению с питоном, который на винде не очень.
3. Это взрослая технология с плавным порогом вхождения.
Такое возникает когда ошибка в неправильном понимании ООП и наследования в частности.
Пол это свойство человека, а не его подвид.
С - это прежде всего кроссплатформенная виртуальная машина, его нужно знать вообще всем программистам. А С++ - это довольно конкретный язык, в котором С-подмножество только мешает и нужно знать, чем они отличаются и никогда их не мешать.
Ну и еще так проще, и после изучения С можно передумать и уйти в Java, например.
Хм, что если я начну с SICP + Си (и то и то придется пока что на русском изучать)
Я посоветовал вкатывальщику в 30 лет делать игры на HTML5, его дичайше проперло и на такой мотивации он быстро вырос. SICP по-моему скукотища для яйцеголовых, удовольствие я от этой книги получил уже с неколькими годами опыта программирования, для начинающего важнее всего, чтобы было интересно.
Вроде слышал, что вкатываться просто в рандомный язык и не иметь никакого базового представления о программировании плохая идея, если хочешь действительно вкатится.
JS далеко не рандомный язык. Он не самый хороший, конечно, но хотя бы всяко лучше бейсика, на котором начинали поколения американцев старше 40 лет (у нас больше паскаль был в цене).
>Почему сначала C, а потом С++?
Потому что он идиот. Если хочешь учить C++, надо учить C++
Но лучше Haskell
http://ideone.com/FoZoBQ
Точно. У них же оператор вычитания дэфолтный есть. Спасибо.
vim или emacs, но ты не осилишь
Бери питон и не еби мозги.
Не выучишь как первый язык, почти все плюсеры начинали с универов, где до того и так знали либо лиспы и алгоритмы(швеция, напрмер) и им остальось лишь выучить обосцанный язык. Другое дело ты, который нихуя не учил.
Тебя сольют на проектах, если устроишься в более-менее норм контору, проэкты очень сложные в большинстве, потому индусов вообще не зовут, в крайнем случае поляков, ты соснешь как математик.
Возьми чего проще, иди в модные фронт-енды, джаваскрипты, питоны, тебе будет легче.
с stl то что не так лол?
Как вообще можно на с++ без stl писать.
Да и кроме буста альтернативы работе с сетью, кроме сокетов, просто нет лол.
>с stl то что не так лол?
Деструктор std::future, полученного из std::async ждёт завершения треда и вешает всё.
>с stl то что не так лол?
Аллокатор — параметр шаблона. Вектор, который выделяет память одним аллокатором, не можно скопировать в вектор, который выделяет память другим аллокатором.
>ты же понимаешь, что это сделано для того, чтобы безболезнено заменить один итерабельный контейнер на другой?
Чтобы можно было взять begin от одного контейнера, а end от другого?
Нет. Ну вот был у тебя вектор, а ты хуяк такой и заменил его на list и все норм дальше работает.
>>871259
Тут я обосрался, не так понял вопрос
>заменил его на list и все норм дальше работает.
А чем использование одного аргумента для обозначения границ итерирования мешает заменить?
Ну копировать вектора такое вообще.
В крайнем случаем можно скопировать вектор в еще один вектор с таким же алокатором, а потом переместить в вектор с другим алакатором.
хотя говорить, что это хорошо не стоит
Ну если тебе нужно от одного элемента списка до другого пройти, в своем каком то велосипедном списке, как бы ты эти границы задал? При том, что ты не знаешь количество элементов между ними.
Ну так а в чем принципиальная разница, передать в функцию два аргумента или пару?
В том, что пара — это один аргумент. Её можно возвращать из функции. И передавать в следующую. По цепочке.
Это всё говорит о "качестве" советского образования. Степанов учился в МГУ и разработал STL. Учился бы в Кэмбрижде, тёрся бы рядом с Саймоном Питоном-Джонсом и был бы знаком с ФП — спроектировал бы STL получше.
>с stl то что не так лол?
У каждого она своя, и в одного std::move или оператор = с ним работающий через std::swap, у другого list.lenght() через sts::distance работает, у третьего до сих пор не всё реализовано, тормозит и выделяет память втихую. И это только из того, что как работает, если говорить об архитектуре, кривоте и оверинжиниренге можно ещё 20 таких простынок накатать сходу.
>Да и кроме буста альтернативы работе с сетью, кроме сокетов, просто нет лол.
Их тыщи — даже в том же Qt всё удобно и красиво, с тредпулами и шлюхами, а не чудовищные неотлаживаемые портянки из asio.
Алсо, помню как-то ковырялся в гитхабе фейсбука — все проекты со своей стандартной библиотекой. EA пару лет назад тоже выложила в опенсорс свою. В гайдлайнах мозиллы запрещается юзать STL — тоже своё добро. И так можно ещё долго продолжать — так или иначе это тот ещё показатель.
После того фейла в стандарте и прописали, лол. Подождём ещё пока асинки человеческие впилят и заживём-то!
Значит подождём пока в язык запилят как в том концепте от мс, и начнём как в шарпе кошерно поживать! лет через 20
А, это ты, двуличная порватка. Не запилят "человеческих" async, это фундаментально невозможно.
>ковырялся в гитхабе фейсбука — все проекты со своей стандартной библиотекой.
std::map:
https://github.com/facebook/folly/blob/21d7adcd34a367bd6708a2438161b92307c4b53f/folly/io/async/AsyncSignalHandler.h#L81
https://github.com/facebook/folly/blob/3272dfdbe243e0ac02acca1dd82bc391d1da079a/folly/io/async/SSLContext.h#L455
std::vector тоже вполне используется. Так что не "все".
А в чём проблема и что ему ещё возвращать? B? рантайм еггог? Возвращается же всё равно либо по значению, либо константа.
В питоне, например, тоже A возвращается (ссылка на переданный же аргумент).
>А в чём проблема и что ему ещё возвращать? B?
Да, B.
std::min и max принимают и возвращают ссылки
Но почему B-то? Самый примитивный и распространённый алгоритм (луп с if el > tmp_max: tmp_max = el) вернёт A. Конечно, можно заменить > на ≥, тогда B. Но почему одно считается "правльнее" другого? Разве для этого не должно быть просто договорённости?
Для консистентности.
Пусть A < B.
Тогда min возвращает ссылку на A, max — на B.
А вот если A == B, то min по-прежнему возвращает ссылку на A, а max... тоже на A. Выгледит как говно.
Ну или так: возьмём упорядоченную последовательность (массив, список) A1 ≤ A2 ≤ A3 ≤ ...
Если бы max в случае равенства возвращал ссылку на B, то при проходе по этой последовательности по парам соседних величин min бы всегда возвращал левый аргумент, а max — правый. А так возвращаемую max ссылку колбасит в зависимости от того, больше ли последующий элемент последовательности или равен текущему.
>А вот если A == B, то min по-прежнему возвращает ссылку на A, а max... тоже на A.
И? A не является минимальным (максимальным) значением списка?
>>871358
>возвращаемую max ссылку колбасит в зависимости от того, больше ли последующий элемент последовательности или равен текущему.
Ну в этом, вроде бы, и смысл max'а, что он находит наибольший, а не последний, не?
И почему имеено min должен возвращать левый, а не max, кстати?
Интереса ради, хотелось бы ещё увидеть, где min/max реализованы так, как ты говоришь. Я как-то не заострял на этом внимание и обычно было всё равно, какой из двух вернётся, так как интересовало лишь значение.
Бамп
>И? A не является минимальным (максимальным) значением списка?
Я ещё раз говорю: дело в (не)консистентности. Можно вообще было сделать это implementation defined. Вопроса, почему оно defined не возникает?
>>871387
>Ну в этом, вроде бы, и смысл max'а, что он находит наибольший, а не последний, не?
А в случае равенства он должен возвращать правую границу. Тогда его поведение будет совместимо с min.
> И почему имеено min должен возвращать левый, а не max, кстати?
Можно, конечно, в случае равенства min-ом возвращать правый, а max-ом — левый. Но всё же по-дефолту используется сравнение <, а не > и естественно желание сохранить непрерывность min и max до равенства.
> the pair (min(x,y), max(x,y)) is either (x,y) or (y,x)
http://stackoverflow.com/questions/26584510/why-does-stdmax-return-the-wrong-value
rust.
Я плотно не изучаю этот язык, но иногда заглядываю туда на тему "а как там сделали X". И каждый раз вижу, что всё, что в це-крест-крест сделали неправильно, там переделывают правильно. min и max не стали исключением.
В общем, ребята учатся на чужих ошибках =)
(It is hard for me to blame people who do so: after all, they just follow the C++ standard
specification of max written by me. It took me several years to see that I was mistaken.)
http://stepanovpapers.com/notes.pdf#page=63
Обсуждение правильного поведения min и max с 61-й страницы. http://stepanovpapers.com/notes.pdf#page=61
На здоровье.
Шлее - самая лучшая книжка по Qt. Если её не понял, значит ты просто не достаточно хорошо знаешь С++.
Будешь смотреть на названия книг не читая их — не далеко уйдёшь.
Да, это
http://ideone.com/q2FrH9
Наверное, потому что ты не вызываешь эти методы? На идеоне твой код не компилируется, если ты вдруг не заметил.
ideon не имеет функционала для многофайловых проектов. Этот файл один из трёх.
добавлю ещё два недостающих, собирал в кьюте.
http://ideone.com/PsPa2i usetime1.cpp
http://ideone.com/G4xX0E mytime1.h
Пробовал написать using std::cout и using std::endl в начале кода? Авоська и заработает, раз уж пизда по сиаутам.
Может быть, вообще пересоздай проект.
Кстати, раз уж зашёл такой разговор, задам интересовавший меня вопрос: почему куча студентов с моего потока (но с более хардкорных спецух) поливает говном "using namespace std" и говорит, что может произойти какой-то ниибись конфликт имён? В книгах НИХУЯ такого не видел.
>Кстати, раз уж зашёл такой разговор, задам интересовавший меня вопрос: почему куча студентов с моего потока (но с более хардкорных спецух) поливает говном "using namespace std" и говорит, что может произойти какой-то ниибись конфликт имён?
Мамкины максималисты и каргокультисты. Шли их нахуй.
Представь, что мы работаем над одним проектом но над разными его частями. Я написал свой ОСОБЫЙ вектор для своих класов и засунул в свой неймспеейс. А потом приходит общий код и:
using std;
using yobanamespace;
vector<yobaclass> v
vector<yobaclass> vv;
Не тоже самое, что и
std::vector<yobaclass> v
yobanamespace::vector<yobaclass> vv;
В сишечке ты тоже любишь ОСОБЫЕ printf'ы писать?
В .cpp файлах нарм, в ․h не пишут.
>Представь, что мы работаем над одним проектом но над разными его частями
Очень актуально для laba3
у make есть автоправила. если у тебя в директории лежит hui.cpp и ты наберёшь make hui, то вызовется g++ hui.cpp
или, к примеру, make CXXFLAGS=--std=c++11 hui -- уже с флагами
Можешь создать Makefile с одной строчкой:
CXXFLAGS=-std=c++11
и просто набирать make hui. Без этих CXXFLAGS в командной строке.
Почему-то ньюфаки думают, что наличие Makefile или наличие в нём чего-то отключает implicit rules
И как в этом разобраться? Ничего не понятно.
Проще выучиться или переучиваться?
Всяким Qt/Gtk/etc хуй знает сколько лет, ничего даже близко похожего на WPF нету. QML — говно для мобилок, не больше.
Разве что sciter радует, хотя он и почти не связан с плюсами. Но его главный минус — количество ебли, несопоставимое даже с ручной сборкой какой нибудь Qt.
Т.е. по делу сказать нечего?
Чем кутя лучше? Тем что нет нормального WYSIWYG редактора? Кривая хуита вместо IDE, которая нихуя не умеет? Или ещё куча плюшек, начиная от общей оверинжинирнутости которая идёт больше из косяков языка конешно, заканчивая тем, что нет даже нормальных средств для создания банальных хуиток типа dockable-виджетов?
С тобой по делу не хочется говорить, потому что ты выдал свою утиную натуру в первом посте. Наплел абсолютной хуйни, а потом захотел конструктивного диалога.
То есть по делу ты банально ничего и не можешь сказать, манявратор.
Ладно, у кути есть небольшое преимущество — кроссплатформа только вот оно таковым является ровно до попытки сделать что-то выходящее за рамки стилей системы/наличия встроенных виджетов, которых там с гулькин хуй
>Крестохуесосы
>такое говно
>говно для мобилок
>количество ебли
>Кривая хуета
>оверинжинирнутости
На будущее: если хочешь, чтобы с тобой говорили по теме - будь вежлив и конструктивен. Изучи, пожалуйста предмет, прежде чем делать какие-то выводы. Пока я в тебе вижу восторженного студента, который прибежал в тред после пар по дотнету.
Ты не заглянул даже в доки (dockable виджеты делаются одной строчкой), не разобрался что такое qml, не осилил визуальный редактор. Да что уж говорить, ты даже не осилил понять, что qt это фреймворк.
Отвечаю тебе только потому, что мне скучно на работе :)
> (dockable виджеты делаются одной строчкой
Если бы ты хоть раз работал с этой хуйнёй - не писал бы этого. Очевидно у тебя знакомство с кутей на уровне "загуглил, всё няшно". Даже отвечать на это смысла нет.
>не разобрался что такое qml
Сразу видно google-driven-developer-a, который опять ни разу с этим не работал но зачем-то что-то утверждает. QML - это говно для мобилок прежде всего потому, что из готового в нём всё ТОЛЬКО для тачскринов, вообще все контролы и виджеты. В старых версиях ещё были нативные вещи вроде тулбаров окон - сейчас их выпилили нахуй, даже нормальный список не сделать - резиновая мобильная параша.
Для десктопного софта что-то уровня си без библиотек.
>не осилил визуальный редактор
В нём банально нет н-и-х-у-я. Ни в кумэловском который даже половину своих же встроенных конртролов отрисовать не может и знать не знает о их пропертях, ни в кутешном особенно добивает то, какими костылями там расположение виджетов присобачивается, и как "каштомизация" кастрированного QSS, который кастрированный CSS без cascading - кастомизация на изменении цвета заканчивается.
> что qt это фреймворк.
В первую очередь гуевый. Я вот не видел пока проектов, использующих Qt как какой нибудь буст чисто ради фреймворка.
Ну вот и поговорил с диванной маней, мне кстати тоже скучно на работе.
Бамп
1) Я не до конца понимаю эти приколы с pointer/reference, если для переменных это ясно, то для классов и прочего не совсем понятно. А также все эти приколы с abstract, virtual, override, interface, прототипирование. Есть какие-то годные пояснения/примеры. (В книжках обычно не очень хорошо освещается этот вопрос).
2) На сколько я понимаю, изучения Qt - очень важная вещь, если намереваться связать свою жизнь с крестами. Собственно, более-менее разобрался, что это такое, но документация отвечает на вопрос для чего это нужно, а не как это сделать. Гайдики/ютьбики или устарели или малоинформативны, если действительно что-то годное?
3) Ну и последний вопрос, что еще было бы неплохо знать? Есть вообще какой-нибудь стек технологий для джун/мида?
P.S. Шапку читал, но возможно не очень внимательно.
Ссылки в шапке частично мёртвые, хотел книжки скачать — и нихуя на дропбоксе
#include <iostream>
using namespace std;
class One {
protected:
int a;
public:
One (){
a = 0;
}
One (int xa){
a = xa;
}
One (const One &v){
a = v.a;
}
~One ();
void input () {
cin >> a;
}
};
class Two : public One {
public:
void out (One b) {
cout << b.a;
}
};
int main (){
One b;
Two d;
b.input();
d.out(b);
return 0;
}
#include <iostream>
using namespace std;
class One {
protected:
int a;
public:
One (){
a = 0;
}
One (int xa){
a = xa;
}
One (const One &v){
a = v.a;
}
~One ();
void input () {
cin >> a;
}
};
class Two : public One {
public:
void out (One b) {
cout << b.a;
}
};
int main (){
One b;
Two d;
b.input();
d.out(b);
return 0;
}
#include <iostream>
using namespace std;
class One {
protected:
int a;
public:
One (){
a = 0;
}
One (int xa){
a = xa;
}
One (const One &v){
a = v.a;
}
~One ();
void input () {
cin >> a;
}
};
class Two : public One {
public:
void out (One b) {
cout << b.a;
}
};
int main (){
One b;
Two d;
b.input();
d.out(b);
return 0;
}
#include <iostream>
using namespace std;
class One {
protected:
int a;
public:
One (){
a = 0;
}
One (int xa){
a = xa;
}
One (const One &v){
a = v.a;
}
~One ();
void input () {
cin >> a;
}
};
class Two : public One {
public:
void out (One b) {
cout << b.a;
}
};
int main (){
One b;
Two d;
b.input();
d.out(b);
return 0;
}
Ошибка
Вызвано исключение: нарушение доступа для чтения.
this было nullptr.
Если для этого исключения имеется обработчик, выполнение программы может быть продолжено безопасно.
Вот кратко код:
...
//создаю в main объект
getline(cin, s_name);
getline(cin, s_last);
cin >> p;
Guest new_guest (s_name, s_last, p);
...
/ вызывается метод этого объекта
void Guest::take(Hh H) {
int n;
n = H->settle(this);
}; */
Вопрос почему не создается ссылка на место в памяти, выделенное для этого объекта? Почему нельзя получить адрес?
По отрывку причин не видно.
Навскидку - возможно, до вызова метода ты где то портишь память (объект то на стеке).
Как же я заебался безуспешно искать решения в интернете. Прошу, помогите!
Дай угадаю: ты довен и у тебя название юзерской папки на кириллице?
Лог сборки в студию
Ну, естественно, он не создаст даже объектный файл, если не может найти заголовочных файлов...
Российское образование это адъ. Я поучился полтора месяца, забил хуй и забрал документы.
И не потому, что ненужно, а из-за античеловеческого отношения, как и в любом порахинском гос. учереждении.
Учи немецкий и едь в германию.
Лучше скачай в Интернете книжки и посмотри как они тебе.
Не понравятся - удаляй, понравятся, то покупай если хочешь.
Я так делал с некоторыми книжками.
Выбирай Итмо. На кт заебут да и вряд ли поступишь, остается на выбор ПИ и ЕНФ. На ПИ проги больше. По поводу ПИ - с предметами по специальности - прога, инфа, етц полное самообразование, преподы молодые ( 22-24 года) им вообще похуй они приходят иногда почитать лекцию,если с работы основной отпустят, все учишь фактически сам. При этом на матмехе прога вообще на нуле, учат паскаль с дедами. На пм пу даже не думай идти. Матан у нас ведет препод с матмеха,вполне сносно. С дискреткой правда все плохо, ведет некомпетентный мужик, который все с листочка очень тихо читает и нет практик.
В общем суть такая - учат хуево везде, что спбгу, что итмо, все ботаешь сам.
int sum(int n)
{
if ( n > 0 )
return n + sum ( --n );
else
return 0;
}
при sum(6) возвращает 15 (то есть 1+2+3+4+5) и теряет 6 по дороге?
Потому, что лучше не использовать модификацию значения если оно уже использовалось в этой строчке.
Вот так будет работать
n + sum ( n - 1 )
То есть это происходит потому, что операция уменьшения значения произошла раньше чем само сложение?
>return n + sum ( --n );
Undefined behavior потому что.
Чем компилируешь, кстати? GCC и клэнг в таких случаях даже разные результаты выдают.
спасибо
Есть поток, создаваемый CreateThread. Есть функция DWORD, в общем все стандартно. В эту функцию я передаю вектор. Получается что-то вроде:
hThread = CreateThread(NULL, 0, thread, &arr, 0, &IDThread);
thread - сама функция. Все вроде заебись, внутри потока работаю с этим вектором, но мне нужно вернуть полученное обратно в arr. Каким образом это можно сделать, так чтобы не создавать ГЛОБАЛЬНЫЙ ВЕКТОР?
gcc + параметр на c11
Имеется строка :
regex reg("_0x45a8\[\d+\]", regex_constants::ECMAScript);
Во время компила , визуалка выдает несколько предупреждений:
"warning C4129: [: неизвестная escape-последовательность"
"warning C4129: d: неизвестная escape-последовательность"
"warning C4129: ]: неизвестная escape-последовательность"
и неправильно его интерпретирует. В чем проблема , где я обосрался ?
1. Регулярки в плюсах - хуйня.
2. Гугли инфу про эти самые регулярки в плюсах.
Твой вопрос лежит на поверхности и найти информацию про него - изи.
Все правильно. Значащие цифры до запятой тоже считаются.
0.0001 <<<4 значащих
50.0001 <<<6 значащих
Думаешь я не гуглил эту проблему , на cplusplus .com ясно написано ,что экранирование - стандартное , при помощи "\".
>>876458
То, что он сказал, но главное:
Порядок выполнения несвязанных/независящих друг от друга выражений не определён. То есть, в (4/2) + (6/2) может первым выполниться как 4/2, так и 6/2.
Хуёво, наверное, сформулировал, но смысл ясен, надеюсь.
\\[ \\d \\]
или используй raw string literals
>>876440
>cplusplus .com ясно написано ,что экранирование - стандартное , при помощи "\".
Да. И показан пример экранирования.
Спасибо,Антоша, я дурак ,не досмотрел.
Это ты меня грузишь.
лично я начал с Dev-C++ а потом прикрутил нужное к Sublime ибо он няша и субъективно быстрее
В 3.86 раз сложнее.
Кстати по поводу третьего пика. Кто-то знает были где-то попытки создать (эзотерический?) язык, где объекты сами бы интерпретировали поступающие к ним вполне рандомные сигналы?
Это ведь единственный способ сделать ООП и в частности крестопарашу пригодными к продакшену.
Иди вагоны разгружать, это просто.
А то мне скоро дадут команду и проект, и надо будет с нуля писать код, а я хочу попробовать сделать не говно, как остальные проекты в конторе.
Александреску и Макконела читал
Ограничено в области пользовательского интрерфейса да. Да и там полная помойка, если код пишется не инструментом дизайна интерфейса, а ручками.
Вопрос остаётся.
А еще бекенды и фронтенды, да и серваки зачастую нагруженные. Что покрывает 70% всей области. Ну вообщем давай беги обратно в манямир, а то как узнаешь правду - ахуеешь и суициднешься.
masterchan@ubuntu:~$ sudo apt-get install build-essential
E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)
E: Не удалось выполнить блокировку управляющего каталога (/var/lib/dpkg/); он уже используется другим процессом?
Почему и как?
Уже установил. Спасибо.
Это лучшее, что есть. Ебаться со всяким говном типа CODE BLOCKS ты будешь сильно больше
>хацкеры
Лал. Местная петушня даже не знает, что инструкция mov полна по Тьюрингу. C++ не нужен, все можно реализовать через mov и индексные таблицы.
> инструкция mov полна по Тьюрингу
нипонел
я думал машина Тюринга должна уметь не только писать, но и читать, причём раздельноо
отцы помогите тотал нюфагу вкатитсяможет что-нибудь получится
в поставке clang++ из коробки я так понял нет стандартных библиотек, а в GCC:g++ есть.
можно их как-нить с консолидировать чтоб и clang все появилось
поставь, блять, студию, и не еби мозг с тем, чего ты еще с полгода-год не будешь понимать.
попробуй поискать на диске файл iostream. Если он присутствует, значит у тебя где-то пути неправильно прописаны
>>878687
>>878667
вроде разобрались, у него почему-то таргет с из начальной установки стоит на msvc библиотеки.
когда меняешь ему таргеты эти он сразу начинает видеть все GCC инклуды и библиотеки.
странно кароч.
причем это как я понял по интернетам началось с последних версий, типо они специально вроде как компилят на msvs чтоб оно сразу работало на msvs, только не понятно как подключать clang к msvs.
Это в последних студиях такой функционал появился.
Дебил...
Хуй его знает что там с MinGW, меня на линупсе только CLion спасает. А вот, к слову говоря, в ебучей студии за дцать лет разработки так и не сделали ебучую линию переноса и ебаные стыдливые табы по дефолту стоят вместо пробелов. В 2013 студии MSVC не поддерживала дефолтные перемещающие операции, да и еще хуева туча косяков (касательно компилятора), а работать приходилось, потому что ебаная CUDA работала только с той версией.
#include <cstdio>
struct ass {
virtual void f() { printf("%s with %p\n", __PRETTY_FUNCTION__, this); }
};
int main()
{
ass ass;
void pvtbl = reinterpret_cast<void>(&ass)[0];
printf("%p\n", &ass);
reinterpret_cast<void()(void*)>(pvtbl[0])(&ass);
}
Крестухи, вы правда думаете, что кто-то будет пользоваться вашим гавноязыком после этого?
Посему, когда я в СВОЕЙ замене write вызываю p write с отличным размером count'а, все ломается и не хочет сохранять. Я хз, как фиксить, ибо и trancate'м менял размер файла, а толку 0
Ну я создаю свою фс. Переписываю функцию, которая вызывается fuse'ом вместо системного вызова write. В мою функцию, помимо прочего, передаются указатель на массив char'ов, из которого пишем, и количество данных, которые пишем. В ней я выполняю некоторые действия над данными, а потом системной функцией pwrite записываю в файл. Проблема в том, что если в pwrite я передаю больший размер данных, чем в мою функцию, хз почему система не хочет сохранять файл. Пробовал в начале моей функции менять размер файла, но безуспешно. В итоге уже тут спрашиваю хз, пытался норм сформулировать
Я в /b/ несколько лет не захожу, не знаю, что там нынче в моде. Особенно после перехода сего форума под крыло mail.ru
Всё как всегда, жрём и обмазываемся, жрём и обмазываемся
такое, например, норм робит
int fs_write(const char path, const char buf, size_t size, off_t off, struct fuse_file_info ffinfo) {
dosth(1, const_cast<char>(buf), size, vfsData->key);
int ret = pwrite(ffinfo->fh, buf, size, off);
return (ret < 0 ? -errno : ret);
}
но если же только уменьшить size, уже не дает сохранить
int ret = pwrite(ffinfo->fh, buf, size - 8, off);
использую свою фс как копию реальной папки, но не думаю, что проблема в этом
на всех тестах было больше восьми
суть не в этом. Хоть я наоборот увеличу size, хотя я до этого вызову ftruncate - результат тот же не сохраняет
Спасибо!11
#include <cstdio>
struct ass {
virtual ~ass() { printf("%s with %p\n", __PRETTY_FUNCTION__, this); }
virtual void f() { printf("%s with %p\n", __PRETTY_FUNCTION__, this); }
};
int main()
{
ass ass;
void pvtbl = reinterpret_cast<void>(&ass)[0];
printf("%p\n", &ass);
reinterpret_cast<void()(void)>(pvtbl[0])(&ass);
reinterpret_cast<void()(void*)>(pvtbl[2])(&ass);
}
Внимание, вопрос: что за хрень по 1-му индексу?
Неправильный ответ.
Т.е. он даже по форме некорректный, т.к. вопросы тут задаю я.
>Внимание, вопрос: что за хрень по 1-му индексу?
Например компилятор сгенерил функцию которая возвращает typeid.
Насчёт того, что указатель на std::type_info лежит в vtable ты прав. Но он лежит по -1-му индексу. Неплохое наблюдение, но ответ неверный. Попробуй ещё.
http://ideone.com/p1VM1J вот, адрес type_info и что лежит по -1-му индексу.
> компилятор сгенерил функцию
Тут ты тоже прав, это генерирует компилятор и это функция. Мембер-функция (очевидно, раз она в vtable)
Такую же парашу можно и на питоне написать. Это не минус языка
Чем плохи стандартные строки? Их используют миллионы разработчиков, и никто не жалуется.
Пользую MinGW в портабл режиме, на рабочем компе ничего ставить нельзя поэтому установка Visual Studio. Динамическая библиотека вроде должна быть совместима с gcc.
#include "sqlite3.h"
#include "sqlite3ext.h"
прописал.
Как динамическую библиотеку подключить?..
Двачую адеквата
Если бы платили за сложость языка (а не решаемых задач) — всевозможные яваиндусы и питонисты сдохли бы с голоду.
Ногами.
Читай шлее, а дальше доки.
как написать функцию, которая заполняет поля структуры через scanf и как лучше эту функцию принимать, через указатель?
http://pastebin.com/3ndaKRfH
в VS выделяет book в сканфах и пишет expression must have a class type
на qt щас гуй делают декларативненько, что в принципе правильно
с++ тут ни при делах
если "современно" хочешь канеш
Программу писала какая-то мразота, поэтому она падает в функции vector<int> dist(string &mask, string &text) на строчке vector<int> dist(index_number.size() - 1);, потому что вектор vector<int>index_number = index_entries(mask, text); оказывается нулевой длины. Хуле тут вообще не так? Сука, как пригораю от этого говна. Даже мои кодесы на винапи более портабельные, чем высеры мразей, которые это выкладывают.
Проект: http://rgho.st/6fgH5wjNd
>C++
Не может в управление памятью
Не может в LALR грамматику
Как следствие, не может в человеческий синтаксис
Не может в денотационную семантику
Не может в настоящие макросы (с темплейтами отсос - не могут в квазицитирование)
Следствие - не может в человеческий полиморфизм (не говоря про higher-order), только убогое кодовысерание.
Не может в referential transparency
Linear typing
Зато может в:
Нетипизированную еблю с указателями
Аппликативный порядок
УТЕЧКИ УТЕЧКИ УТЕЧКИ
Зловонную кучу Стандартов не реализованных в полном объеме ни одним компилятором
Стандарты наполовину состоящие из undefined behavior и implementation-defined
Следовательно, миллиард практически не диагностируемых "приятных" неожиданностей.
Обсос бугуртит, пока малварщики делают деньги, не беспокоясь обо всей этой быдлотеоретической ебале. Поссал на твое блядское ебло, мразь.
Ебаный в рот, что за тварь это писала? Когда у этой твари, у этой жопоногой падлы строки передавались через стэк, я везде понаставил ссылки, но, сука, теперь в одной из функций строка делается нулевой. Ааааа, какой дегенерат это писал.
То самое чувство, когда насрал - а тебя игнорят.
Студенная былина, сударь.
>>880248
Ответ, кстати, легко гуглится. Все больше убеждаюсь, что умение писать правильные запросы к гуглу намного важнее для программиста, умения решать олимпиадные задачки
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/881172.html (М)
Вы видите копию треда, сохраненную 11 декабря 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.