Этого треда уже нет.
Это копия, сохраненная 11 декабря 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
640 Кб, 570x636
72 Кб, 736x736
149 Кб, 800x420
343 Кб, 517x398
Неоффициальный™ нетрадиционный® C++ тред #42 #866503 В конец треда | Веб
ОП наш прошлый умер…
Да здравствует ОП,
Что принесет нам срачи новые
Горенье и баттхёрт:

В тиши и у камина,
Или в лесах, снегах,
В полете с снежных горок,
Или в мечтаньях, снах.

Коммитет слагает главы
Величеству стандарта,
Сиятельству плюсов,
Замерзших, нахуй, в легаси.

Майкрософт, звеня, раскинет
Корутин пейперы в стандарт.
И модулями всколышет
Замерзших фичей страх.

За крестовым причащеньем
Уйду один в стандарт,
Где спрятан след 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: Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по С++, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".

Q: Сейчас все пишут на %languagename, а кресты сосут у него!
A: Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд хотя это вполне возможно, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.

Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад!
A: Попробуй учебники, изданные после 2011 года, в которых рассматриваются возможности новых стандартов (C++11 и C++14). Эти фичи не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.


Литература

Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:

  • Для нюфань

    Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Программирование. Принципы и практика использования C++ 2016 https://yadi.sk/i/Yd6KKpLBqJSUr
    Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ 2014 https://goo.gl/kVaela
    Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u

  • Кроме того, есть еще пара старых добрых учебников для ньюфагов. Часть информации в них устарела, но многие считают, что это компенсируется их большей, по сравнению с современными учебниками, понятностью:


    Автор(ы) Название Год Ссылка
    Герберт Шилдт C++. Базовый курс 2010 https://goo.gl/qMLAFl
    Роберт Лафоре Объектно-ориентированное программирование в C++ 2004 https://goo.gl/QvjR6x

  • Best practices

    Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все:


    Автор(ы) Название Год Ссылка
    Скотт Мейерс Эффективное использование C++ 2005 https://goo.gl/wsDXGz
    Скотт Мейерс Наиболее эффективное использование C++ 1996 https://goo.gl/tHa0tO
    Скотт Мейерс Эффективный и современный C++ 2015 https://goo.gl/Im8VYQ
    Скотт Мейерс Эффективное использование STL 2002 https://goo.gl/QtS8Dc
    Герб Саттер и Андрей Александреску Стандарты программирования на языке C++ 2005 https://goo.gl/Cpk4YR

  • Проектирование

    Следует пролистать все перед переходом от лаб к написанию настоящего софта.
    Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать:


    Автор(ы) Название Год Ссылка
    Ален Голуб Веревка достаточной длины, чтобы выстрелить себе в ногу 2001 https://goo.gl/fBmuxp
    Джеймс Коплиен Программирование на C++ 2005 https://goo.gl/Y1WGdU
    Андрей Александреску Современное проектирование на C++ 2002 https://goo.gl/e1V5BC

    Ахтунг!
    Предыдущие два раздела дополняют, а не заменяют классические книги о лучших практиках разработки без привязки к конкретному языку (Макконнелл, Uncle Bob, GoF).

  • Справочники

    Наиболее детальные описания языка. Удобно использовать как референс, читать от корки до корки не обязательно:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Язык программирования C++ 2013 https://goo.gl/XkAiOX (на ангельском)
    Бьерн Страуструп Язык программирования C++ 2010 https://goo.gl/iZBDiV <устарело>

    Кроме того, на ангельском доступны стандарты C++11, C++14, а также последняя версия черновика стандарта C++17.

  • Тонкости языка

    Книги для тех, кто возлюбил кресты всей душой и желает углубиться в детали:


    Автор(ы) Название Год Ссылка
    Герб Саттер Решение сложных задач на C++ 2002 https://goo.gl/iWaa6S
    Герб Саттер Новые сложные задачи на C++ 2004 https://goo.gl/4nn512
    Бьерн Страуструп Дизайн и эволюция C++ 1994 https://goo.gl/FqbPwo (для легкого чтения)

  • Отдельные аспекты

    Читать по необходимости:


    Автор(ы) Название Год Описание Ссылка
    Энтони Уильямс Параллельное программирование на C++ в действии 2012 Про использование std::thread
    и других фич последних стандартов
    для разработки многопоточных приложений
    https://goo.gl/qJfBkD
    Николаи Джоссатис C++. Стандартная библиотека 2012 Детальный справочник по STL и
    остальным частям стандартной библиотеки
    https://goo.gl/PEyiMH
    Дэвид Абрахамс и Алексей Гуртовой Шаблонное метапрограммирование на C++ 2009 "Мы встроили в шаблоны C++ функциональный
    язык программирования, чтобы ты мог
    программировать, пока программируешь"
    https://goo.gl/isSt7j
    Дэвид Вандевурд и Николаи Джоссатис Шаблоны C++. Справочник разработчика 2003 После прочтения этой книги тебя не приведут
    в ужас даже исходники boost::MPL
    https://goo.gl/0M4NpG
    Роберт Седжвик Фундаментальные алгоритмы на C++ 2001 Стандартный курс алгоритмов с примерами
    на C++. Для его чтения не нужно знать
    мертвые языки, в отличие от этого вашего Кнута
    https://goo.gl/4jwxSl (части 1-4),
    https://goo.gl/yDuQgG (часть 5)


Другие обучающие материалы

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

Здесь ты можешь найти все остальные существующие IDE, если ни одна из вышеперечисленных тебе не приглянулась.

Разумеется, установка IDE вовсе не обязательна. Ты можешь использовать текстовый редактор в связке с каким-нибудь компилятором, выбросить мышку, отрастить бороду и примкнуть к Церкви Святого Столлмана. Но лучше тогда сразу отправляйся в тред сишников, если не хочешь быть обоссанным другими сектантами за использование б-гомерзкого C++.

Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу!
A: Без проблем:

  • Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio
  • Более навороченный, но коммерческий аналог
  • Встроенный в clang статический анализатор
  • Детектор утечек для Visual Studio. Предельно прост в прикручивании
  • На порядок более мощная и сложная утилита для *nix, служащая тем же целям
  • Гугловские утилиты для контроля корректности кода
  • Гугловский фреймворк для автоматизации тестирования

Также не стоит забывать о том, что правильные посоны экономят свое время и нервы, используя мегагодные git и cmake во всех проектах.

Q: Мне надоело писать велосипеды, какие у вас тут популярные либы?
Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать?
A: Гляди сюда:

  • boost

    Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.

    Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.

    Литература:


    Автор(ы) Название Год Ссылка
    Ариндам Мукерджи Learning Boost C++ Libraries 2015 https://goo.gl/b0gPN1 (на ангельском)

  • Qt

    Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.

    Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.

    В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.

    Литература:


    Автор(ы) Название Год Ссылка
    Макс Шлее Qt 5.3. Профессиональное программирование на C++ 2015 https://goo.gl/aZ66gK
    Макс Шлее Qt 4.8. Профессиональное программирование на C++ 2012 https://goo.gl/Slb1In (книга) +
    https://goo.gl/toUDWc (исходники примеров)
    Марк Саммерфилд Qt. Профессиональное программирование 2011 Только Qt 4.х:
    https://goo.gl/qpkZFm (книга) +
    https://goo.gl/LIIECh (исходники примеров)

  • Другие хорошие библиотеки

    Несколько специализированных библиотек для часто встречающихся задач. Все — маленькие, быстрые и простые в освоении:

    • libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году)
    • SFML - работа с графикой и аудио
    • FLTK - графические интерфейсы

    И еще куча библиотек на любой вкус.


Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.


#2 #866520
Не тонем.
#3 #866531
В прошлом треде запости ссылку на перекат.
#4 #866539
Перекатился.
#5 #866558
Есть убунта и я хочу вкатиться в с++. На чем писать код и чем помпилировать? Слышал про gcc и g++: они нормальные?
Скачал вторую из шапки книгу: Стэнли Липпман, Жози Лажойе и Барбара... - она подойдет для новичка, если я собираюсь программировать на линуксе. Могу я из-под прыщей кодить программы для виндоуса?

Точно, первый опыт хелоувордов был на в10 с вс, поэтому я не понимаю, как писать в блокноте, чтобы потом в отдельном компиляторе скомпилировать программу.
>>866587>>870348
#6 #866574
>>866503 (OP)
Плюсы - говно. Куча ненужной хуиты типа шаблонов и множественного наследования, нет делегатов, объектники от разных компиляторов бинарно несовместимы, уродский раздутый стандарт на тысячу страниц. Если бы плюсы не взяли за базу Си, то это говно давно бы померло.
>>866592>>866613
#7 #866581
Господа, помогите. Пишу в Qt 5.6, использую библиотеку для отображения оффлайн карты https://github.com/raptorswing/MapGraphics
Подскажите, как реализовать в ней геолокацию ?
>>866625>>866899
sage #8 #866587
>>866558

>Есть убунта и я хочу вкатиться в с++. На чем писать код и чем помпилировать? Слышал про gcc и g++: они нормальные?


Значит Убунту тебе мозгов поставить хватило, а найти в чем код писать нет. Ставь студию в вайне тогда, пердолик

>Могу я из-под прыщей кодить программы для виндоуса?


С этого окончательно проиграл. Ты С++ изучать собираешься или тебе надо просто заебаться? Каждый блядский тред одно и тоже, каждый тред. Ньюфажики лезут изучать С/С++, но студия видимо слишком мейнстрим для них, нужно обязательно пердолиться с мейкфайлами и компиляцией из блокнотика.
>>866599
#9 #866592
>>866574
Ну и почему же это единственный выстреливший наследник си, коих немерено? инб4: потому что ты далбич.
>>866603
#10 #866599
>>866587

>обязательно пердолиться с мейкфайлами


И зачем нужно писать мейкфайл для компиляции хэловорда? g++ hui.cxx — слишком сложно для нюфага?
>>866612>>873623
#11 #866603
>>866592

> Ну и почему же это единственный выстреливший наследник си


Зафорсили. А реально язык - кусок говна. Если откинуть божественное наследие Си, то останется один вонючий кал, вроде шаблонов, перегрузки операторов, изуверские способы функционирования конструкторов/деструкторов, отсутствие бинарного стандарта на типы, строковый тип с костылями, и.т.д..
#12 #866606
>>866603
Насчет шаблонов ты зря, без генериков совсем хуево. Лучше уж такие чем никакие.
С остальным согласен.
>>866628
#13 #866609
>>866603

>отсутствие бинарного стандарта на типы


Ах да, и это необходимо для мультиплатформы.
Сделанной через жопу, правда.
>>866628
#14 #866612
>>866599
а если у тебя 4 файла?
>>866615>>866618
#15 #866613
>>866574

> нет делегатов


А с чего язык должен поддерживать какой-то специфичный "паттерн проектирования"?
>>866628
#16 #866615
>>866603
Ну так из-за наследия си всё говно и льётся. Ты пока что перечислил только нужные фичи. Кстати, что не так с конструкторами/деструкторами?
Не понял насчёт бинарного стандарта типов. Одинаковые размеры на всех платформах? Хуиток вроде cstddef как говна, и опять же — это из няшной проблема.
>>866612
g++ hui1.cxx hui2.cxx hui3.cxx hui4.cxx
инб4: вводить всё каждый раз тоже не надо, да.
>>866624>>866628
#17 #866618
>>866612

>4 файла


>хэловорды


>мэйкфайлы


ловите поехавшего блять
алсо один хуй придётся разбираться с мейкфайлами, сборкой под разными системами и конфигурацией билдов, так что это райт вей
>>872204
#18 #866624
>>866615
Пнятно, значит компилировать в g++, тогда где писать. Есть что поудобнее, чем стандартный убунтовский блокнот?
К слову свободная ось стоит скорее для обработки фотографий моего члена в рав, но снова появилось желание вкатиться в дев и поэтому пишу. Еще в каком-то гайде слышал, что для вкатывания в код желательно сидеть на прыщах и все пилить вручную. Еще мне нравится юнити, благо стоит не совсем некроговно и на все хватает ресурсов компьютера, а винда для игрушек.
>>871060
#19 #866625
>>866581
Бамл
#20 #866628
>>866606

> Насчет шаблонов ты зря


Шаблоны - это такая же залупа, как и макросы. И претензия к ним точно такая же, как к макросам - не видно кода, который реально выполняется. Даже в отладчике

> Лучше уж такие чем никакие.


Страуструпа можно было простить в начале, когда он выдумывал множественные наследования. Но когда появилась и успешно стрельнула java, которая реально в продакшене показала, что нужно только одиночное наследование, а для остального вполне достаточно интерфейсов - уже не было никакого смысла поддерживать этот ебаный цирк с конями
>>866609

> Сделанной через жопу, правда


Тип int должен быть равен размеру регистра целевой платформы. Из этого всё и вышло. Никогда нельзя сказать наверняка, сколько у тебя будет в short int
>>866613

> поддерживать какой-то специфичный "паттерн проектирования"


Делегаты действительно позволяют использовать объект без знания его структуры. Не нужно, блеать, быть родственником, чтобы скоммуницироваться. Все это поняли, кроме долбонавтов из С++-комитета
>>866615

> Ну так из-за наследия си всё говно и льётся


Стандарт K&R Си - это 100 страниц с примерами.
В отличии от стандарта крестов, которые уже в первой редакции весили 450 страниц

> Кстати, что не так с конструкторами/деструкторами?


Неявные. Это - проблема в сопровождении.
Object t и Object t() инициализируются по-разному, нельзя заранее сказать, какие деструкторы сработают, не заглянув в код

> Не понял насчёт бинарного стандарта типов. Одинаковые размеры на всех платформах?


Все портируемые проекты начинаются с собственных велосипедов, описывающих элементарные типы. Второй, очень важный момент. Объекты, скомпилированные одним плюсовым компилятором, не получится использовать в проекте с другим компилятором. Из-за манглинга имен и отсутствия стандарта на бинарный объект внутри obj-файлов. Экспорт почти всегда си-подобный. И это не будет решаться никогда
#21 #866630
>>866628

> использовать объект без знания его структуры


Всмысли? Я использую кучу разных классов не зная их структуры. ЧЯДНТ?
>>866635
#22 #866635
>>866630
Как минимум, тебе нужен хидер класса, чтобы его использовать. А делегат - это указатель на объект + указатель на метод. Т.е. тебе даже его хидер не нужен, чтобы вызвать. Например, если объект живет в какой-то закрытой либе. Это удобно
sage #23 #866646

>И претензия к ним точно такая же, как к макросам - не видно кода, который реально выполняется.


Почему тогда я могу дебажить начинку STL? Сдается мне ты пиздишь.

>Страуструпа можно было простить в начале, когда он выдумывал множественные наследования.


Хорошо так говорить в 2016 году. Посмотрел бы я на тебя в 95 в время хайпа на ООП.

>Тип int должен быть равен размеру регистра целевой платформы.


А вот за это пожалуй я тебя обоссу, уж извини. Наиуебанская из возможных идей. Только переписали древнюю дристню, которая падала при переходе на х64, теперь ты предлагаешь какой-либо реюз кода между архитектурами вообще по пизде пустить. Лучше уж наоборот отменить int как нечистое наследие сишки и оставить всякие int8_t и т.п.

>Стандарт K&R Си - это 100 страниц с примерами.


Драфт С11 занимает ~600 страниц. Возможно в 80-х это было действительно так. Ну так первые стандарты крестов тоже меньше были. Такой дешевой демагогией нас не проведешь.

>Object t и Object t() инициализируются по-разному, нельзя заранее сказать, какие деструкторы сработают, не заглянув в код


Не понимаю чего тебе не нравится, все очень логично и понятно.

>Все портируемые проекты начинаются с собственных велосипедов, описывающих элементарные типы.


В стандарте есть переносимые типы. Скорее всего всем просто на них похуй. Как что-то плохое.

>Делегаты действительно позволяют использовать объект без знания его структуры.


Охуительные истории. std::function для кого в стандарт добавили? Это без учета бустовых и самописных. Доступных наверное года с 1998, если не раньше.
>>866718
#24 #866649
>>866628
Шаблоны хороши, когда используются как простые генерики, но в остальных случаях ты прав хотя хорошие аст макросы — очень хорошая вещь.

Жява показала что лучше вообще нахуй выпилить наследование из языка, если не хочется оверинжинирить, страдать раком вроде object slicing-а и тормозить, вот что она показала. Но опять же, подобные избыточные вещи регулируются конвеншеном "чо и как используем" для конкретного проекта.

Про неявность конструкторов — в твоём примере во втором случае конструктор вообще не вызывается кстати, вопрос знатокам - а чо вообще вызывается?, а так если знать какие вообще существуют конструкторы проблем нет.

На бинарное несоответствие компиляторов, мягко говоря, насрать.
>>866655>>866721
#25 #866651
>>864645
Перекатываюсь из прошлого треда
#26 #866654
Мне может кто-нибудь объяснить, почему неосиляторы больше всего бомбят именно от множественного наследования?
#27 #866655
>>866649

>Шаблоны хороши, когда используются как простые генерики


А что, есть дебилы которые используют для чего-то еще?

>2ch.mail.ru


Хотя о чем я, мда.
>>866657
#28 #866656
>>866654
Потому что на редкость кривая хуйня, которая спровоцировала костыли вроде виртуального наследования в языке.

По правде в виду ненужности как и обычного наследования один хуй нигде не используется, кроме срачей.
#29 #866657
>>866655
Стандартную библиотеку открой. Особенно какую нибудь type_traits.
Ржущий_александерску.жпг
>>866667
#30 #866667
>>866657

>дебилы


>Стандартную библиотеку


Ну так все сходится.
#31 #866718
>>866646

> Почему тогда я могу дебажить начинку STL?


Давай, сходи подебажь её после gcc, сынок. Даже студия научилась показывать экземпляры коллекции примерно в 2012 году

> А вот за это пожалуй я тебя обоссу, уж извини.


Себя обоссы, ладно? Я нигде не писал, что это хорошо

> Не понимаю чего тебе не нравится


Неоднозначность создания объекта. Это хуево со всех сторон

> Охуительные истории. std::function для кого в стандарт добавили?


Нахуй он кому нужен, этот ебаный костыль? Во-первых, указатели на функции итак есть в стандарте, во-вторых, std::function для объектов специфицируется от определенного класса, а это - кусок говна, а не делегат. Делегат здорового языка не требует имени класса, если ты вдруг не знал. Только сигнатуру метода.
>>866995
#32 #866721
>>866649

> а так если знать какие вообще существуют конструкторы проблем нет


Ты, надеюсь, понимаешь, что идея о существовании нескольких конструкторов сама по себе наркоманская?

> На бинарное несоответствие компиляторов, мягко говоря, насрать


Если писать хелловорлды или собирать всё из сорцов, то конечно, насрать можно на многое.
>>866654
Потомучто адовая хуита. Особенно, если вдруг кто-то захочет сделать наследование от двух классов, у которых в свою очередь, где-то был общий предок.
>>866725>>868243
#33 #866722
Почему я не могу сделать вот так:
pz++;
А должен делать вот так:
(
pz)++;
?
>>866723>>866730
#34 #866723
>>866722
>>866722

> ФИКС


Почему я не могу сделать вот так:
pz++;
А должен делать вот так:
(
pz)++;
?
>>866724>>866750
#35 #866724
>>866723
бля, почему звёзды не ставятся? Ну кароче там у меня перез "p" стоит "*";
#36 #866725
>>866721

>Ты, надеюсь, понимаешь, что идея о существовании нескольких конструкторов сама по себе наркоманская?


Да нет, не вижу ничего наркоманского.

>Если писать хелловорлды или собирать всё из сорцов, то конечно, насрать можно на многое


Если к хуйне придираться — то тем более. Приведи реальный юзкейс проблемы, как с этим ирл столкнуться можно. Все сторонние библиотеки поставляются либо исходниками, либо бинарниками под все компиляторы как тот же Qt. А тащить левую хуиту без поддержки и исходников — нужно быть конченым уебаном.
>>866811
#37 #866730
>>866722
Можешь, в зависимости от типа pz (с различной семантикой, соответственно).
#38 #866737
>>866628

>нельзя заранее сказать, какие деструкторы сработают, не заглянув в код


Что ты несёшь?
>>866811
#39 #866750
>>866723
Потому что приоритет операторов.
pz++ дереференс указателя (pz + 1).
(
pz)++ — инкремент значения, на которое указывает pz.
http://ideone.com/kFBawX
>>866752
#40 #866752
>>866750
Точнее даже, pz++ это инкремент pz и дерефернс этого нового pz, равного старый pz плюс один. В общем, в коде всё видно.
>>866758>>866759
#41 #866757
Что посоветуете для изучения буста?
>>866809
#42 #866758
>>866752

>•pz++ это инкремент pz и дерефернс этого нового pz, равного старый pz плюс один. В общем, в коде всё видно.


В коде видно, что это не так.
>>866762
#43 #866759
>>866752

>в коде всё видно.


И вообще ты там за границу выделенной памяти вывалился.
>>866762
#44 #866760
*pz++ - это мы берем значения по адресу pz в temp, далее увеличиваем указатель на pz, а далее возвращаем значение из temp.
>>866761
#45 #866761
>>866760

>мы берем значения


кладем значени fix
#46 #866762
>>866758
Да, обосрался я с порядком. Дереференс старого и затем инкремент, лишь последующие обращения будут указывать на (изначальный_pz + 1).
Так, как написано в том посте, будет работать •++pz.

>>866759

>И вообще ты там за границу выделенной памяти вывалился.


Ты про pz[1] после инкремента? Так это специально, чтобы показать, что произошло. (Можно было, конечно, сделать массив из трёх элементов, но выводишь лишь первые два, но не похуй ли, если вся суть в pz[0].)
#47 #866773
Как работать с типом char для массивов? Повсюду гайды как этот тип использовать для строкового массива, но мне хочется поэкономить память (в учебных целях по крайней мере) и использовать char для символьного массива, но у меня вместо цифр одни ascii символы появляются, можете подсказать что делать? Или хотя-бы руководство какое скинуть на такую вроде-бы простую тему.
>>866794>>866797
#48 #866794
>>866773
Что именно ты хочешь?
Покажи пример кода.
#49 #866797
>>866773

>но у меня вместо цифр одни ascii символы появляются, можете подсказать что делать?


std::cout << (int) c
#50 #866809
>>866757
Буст
#51 #866811
>>866725

> Да нет, не вижу ничего наркоманского


Возможностью создать разные конструкторы для присваивания, копирования и создания обязательно воспользуется какой-нибудь фрик, обчитавшийся Александреску. А потом на сопровождении этого говна обязательно обдерут жопу сотни людей

> Приведи реальный юзкейс проблемы, как с этим ирл столкнуться можно.


Есть охуенная либа, собранная, допустим, интеловским компилятором. Допустим, это очень оптимизированный видеокодек, купленный за деньги. Никто, блеать, тебе не даст ни сорцов и не будет делать версии для разных компиляторов. Просто сделают обертки на Си и выдадут с хидер с extern "C". Это настолько типично для коммерческих библиотек, что я удивлен, нахуя ты это спрашиваешь

> либо бинарниками под все компиляторы как тот же Qt.


Видимо, ты кроме Qt ничего не подключал
>>866737
Учи свой любимый язык. Если деструктор не объявлен виртуальным, то потомки его не вызовут. Но если он объявлен, то будет вызываться обязательно. А бывает так, что деструкторы нужно вызывать избирательно. Явного вызова деструктора с варнингом о его отсутствии хватило бы для всего. Но нет, Страуструп пошёл своим путем
#52 #866839
>>866811

>Это настолько типично для коммерческих библиотек, что я удивлен, нахуя ты это спрашиваешь


Потому что в их случае проблемы и нет. Дали сишный апи — тем лучше, откуда угодно вызвать смогу.

>обчитавшийся Александреску


Так что наркоманского-то, шарпофрик? Единственное но тут — генерируемые компилятором, но у тебя всегда есть explicit которого требуют вообще все гайдлайны контор вроде гугла и мозиллы.

И да — Александерску, он про другое. ро ту самую хуёвую часть плюсов которой ты не видел, если считаешь вот это проблемами.

Нужно вызывать деструкторы избирательно — сделай отдельный метод как clear() в векторе и не еби мозга.
>>866853
#53 #866853
>>866839

> Дали сишный апи — тем лучше, откуда угодно вызвать смогу


Т.е. экспорт класса - невозможен. Об этом я и пишу. В плюсах его не было, нет и не будет. Долбонавты из комитета лучше какой-нибудь буст-хуюст засунут, чем абсолютно необходимую для продуктового софта фичу (т.е. кросс-компиляторный экспорт классов)

> но у тебя всегда есть explicit


> сделай отдельный метод как clear() в векторе и не еби мозга


Вся суть плюсовых фич - сначала их запилить, немного подрочить, написать книгу, а потом запилить способы их обхода.
>>866873>>866879
#54 #866873
>>866853

>Об этом я и пишу


Написал бы нинужна, но напишу так: это именно что говёное наследие си, которое будет исправлено только модулями стандарте так в 20-м, но вы там как нибудь держитесь, лол
Просто взять и запилить эту фичу они не могут из-за легаси, притянуть какую-то хуитку из буста которую один хуй никто юзать не будет понятно что легче.

А способ обхода был таки изначально. И если хочешь чего-то что изначально не задумывалось хуй знает сколько лет назад — не удивляйся что язык такими фишками не располагает в отличие от шарпов, сделанных с опытом плюсовых шишек.
>>866891>>866896
#55 #866879
>>866853
Ты себе объем этой фичи представляешь? Она очень объемная в реализации и не очень полезная по сути. Потому что автору твоего видеокодека намного выгоднее сделать сишный интерфейс и продавать свою либу не только тем, кто пишет на С++, но и на Java, питоне и прочем говне. И, если ему так охота, то можно сделать открытый hpp враппер (точно такой же, какой потребуется для Java, питона и прочего говна).
C++ в этом плане ничем не отличается от любого другого языка, наименьшим общим кратным между всеми языками является C ABI, только и всего.
То ли дело некоторые другие языки, в которых ровно один компилятор, лол. Вот там-то такой проблемы точно нет.

>Object t и Object t() инициализируются по-разному


Вообще-то второе - это объявление функции с именем t, возвращающей Object.
>>866896
#56 #866891
>>866873

> притянуть какую-то хуитку из буста которую один хуй никто юзать не будет понятно что легче.


А вот это намного удобнее. Сейчас лично мне буст уже не нужен, последнее, что держалось, было filesystem. И это круто.
>>866903
#57 #866896
>>866873

> это именно что говёное наследие си


Отсутствие экспорта классов не может быть наследием Си. Потомучто в Си нету классов

>>866879

> Ты себе объем этой фичи представляешь? Она очень объемная в реализации


Она очень мала. Сейчас поясню. Например extern "C" говорит, что аргументы функции надо класть в стек задом наперед . Результат работы функции тоже будет на стеке. И этого хватает уже 30 лет для экспорта.
Точно также надо поступить с классами. Например заявить, что у методов класса extern "СPP_PROGRAMMACH" все аргументы кладутся на стек, первый аргумент - указатель на экземпляр класса, и ещё вот так должна быть сделана VMT, на неё указывает ещё какой-нибудь аргумент на стеке. Этого хватит ещё на 30 лет, люди наконец-то бросят писать сишные обертки.

> Вообще-то второе - это объявление функции с именем t, возвращающей Object.


В треде неосилятор. Все в Страуструп
>>866903
#59 #866903
>>866896

>Отсутствие экспорта классов не может быть наследием Си. Потомучто в Си нету классов


Х И Д Е Р Ы
И
Д
Е
Р
Ы

Суть в том, что при попытке такого вот жопошного экспорта ты делаешь это со всеми кишками. В языке хватает корявого говна, не надо ещё больше необдуманно плодить.

>неосилятор


Тебе об этой хуйне пишет уже 3-й анон, что как бы намекает.

>>866891
Открой для себя какой нибудь Qt и перестань использовать оверинжинирнутые буст и стл корявый. он кроме более широких возможностей как минимум гарантирует нормальную имплементацию, без подводных камней и хуиток конкретной импоементации
>>866947>>871248
#60 #866947
>>866903

> Х И Д Е Р Ы


Что с хидерами не так? Почему при сишном экспорте хватает только хидеров, а для плюсового нужны сорцы целиком, даже если поменялась только версия компилятора?

> экспорта ты делаешь это со всеми кишками.


Для такого экспорта хватить только хидера, чтобы можно было вызывать какие угодно методы, собранные каким угодно компилятором какой угодно версии. Это - как раз именно то, что нужно.
#61 #866961
>>866811

>Если деструктор не объявлен виртуальным, то потомки его не вызовут.


А, вот ты о чём. Не думал, что для кого-то это до сих пор проблема.

> А бывает так, что деструкторы нужно вызывать избирательно.


Например.

И, возвращаясь к >>866628

>Object t и Object t() инициализируются по-разному


Object t(); вообще не инициализирует никакого объекта, это декларация функции.
>>866995
#62 #866995
>>866811

>А бывает так, что деструкторы нужно вызывать избирательно.


Нет не бывает. Мне вообще сложно вообразить зачем это может в понадобиться, кроме случаем какого-то кромешного говнокода.

>>866961

>Object t(); вообще не инициализирует никакого объекта, это декларация функции.


Типичный уровень "критиков крестов", еще и синтаксис учить рекомендует, лул.

>>866718

>std::function для объектов специфицируется от определенного класса, а это - кусок говна, а не делегат


Ты всегда можешь забиндить this. Странно что я тебе это объясняю.
>>867008>>867027
#63 #866998
Сап, програмач. Учу с++ 2 месяца, сейчас есть задачка в которой нужно будет работать с аргументами командной строки (всего 5 штук). Погуглив узнал как это можно сделать, в связи с чем пришел за советом. Стоит ли самому все ручками разбирать или лучше сразу просто юзать парсер, типа gengetopt?
#64 #867008
>>866995

> Нет не бывает. Мне вообще сложно вообразить


Нет, бывает. В том то и дело, что ты воображаешь о том, что я сам видел и поддерживал

> Ты всегда можешь забиндить this.


Ты наверное не понимаешь, что речь идет не о том, как вызвать метод у потомка от какого-нибудь класса, а чтобы вообще уметь вызывать метод класса, не имея даже его(класса) описания, а только указатель на экземпляр, да? Посмотри на кишки Qt, на которое тут дрочат вприсядку - там есть собственный урод, имитирующий делегатов, но всеравно требующий, чтобы метод вызываемого класса был потомком какого-то там базового класса Qt. То, что я хочу получать события от Qt в классы, которые никак не связаны с Qt и не наследуются от него - авторам Qt в голову не приходит.
#65 #867027
>>866995

>Типичный уровень "критиков крестов"


Где ты увидел "критика крестов", крестодаун? Это была критика "критиков крестов".
>>867008

>я сам видел и поддерживал



> кто-то написал говнокод


> ЭТО ЯЗЫК ВИНОВАТ!11


Ну ясно.
>>867032
#66 #867029
>>867008

>Ты наверное не понимаешь, что речь идет не о том, как вызвать метод у потомка от какого-нибудь класса, а чтобы вообще уметь вызывать метод класса, не имея даже его(класса) описания, а только указатель на экземпляр, да?


Шарподаун думает, что шарп умеет вызывать методы у неизвестных ему классов через libastral. Шарподаун, просто у .NET CLR есть описание твоего класса, поэтому "вызов без описания" работает.
>>867032
#67 #867032
>>867027

> кто-то написал говнокод


> Ну ясно, выбрось все и перепиши


Ну охуеть просто. Ты наверное участвовал в проектах, где всё написал сам? Делал что-нибудь, кроме своих лабораторок? Были люди, которые согласились тебе за твое говно заплатить?
>>867029

> Шарподаун думает, что


Причем тут шарп, дятел? Почему это умеют делать любые компилируемые языки с классами, кроме плюсов? Например, тот же древний Delphi?
>>867059
#68 #867035
>>867008

>В том то и дело, что ты воображаешь о том, что я сам видел и поддерживал


Мои соболезнования, скорее всго ты работаешь с кодом дебилов.

>чтобы вообще уметь вызывать метод класса, не имея даже его(класса) описания, а только указатель на экземпляр, да?


Именно для этого и сделан std::function. Делаешь function от метода, биндишь this, передаешь третьим лицам которые об изначальном классе ничего не знают.
>>867045
#69 #867038
Понимаю что это спермопроблемы, но всё же памагити: есть проект с dx9, который на десятку не ставится, и его нужно собрать. Гуглинг и сайт мс выдают только статеички как с него слезать, а рефакторить 7клок не вариант, что делать?
#70 #867045
>>867035

> скорее всго ты работаешь с кодом дебилов.


Скорее всего, ты не видел проектов размером более, чем 9к строк и которым более, чем 2 года. Тебе ещё предстоит многое увидеть, если останешься в профессии

> Именно для этого и сделан std::function. Делаешь function от метода, биндишь this


Теперь всю эту залупу передай в либу, написанную на другом компиляторе. А, у тебя ж все шаблонные чудеса происходят на этапе компиляции? Ах, какая жалость.
>>867086
#71 #867059
>>867032

> Почему это умеют делать любые компилируемые языки с классами, кроме плюсов?


> Причем тут шарп, дятел?


Т.е. ты спрашиваешь меня, "при чём тут шарп", хотя сам не понимаешь, что он не при чём? Шарп я для простоты упомянул.

Теперь отвечу на вопрос "почему умеют": да потому же, что и шарп. Имеют жирный RTTI и жирный рантайм, умеющий лазать по RTTI. Чудес не бывает, бесплатно ничего не даётся.

> Например, тот же древний Delphi?


Понимаешь ли. Ситуация, когда язык пилит одна контора для одной платформы, как то Delphi для wintel, C# для .NET CLR или Java для JVM кардинально отличается от ситуации, когда язык делается независимым от платформы и вендора.

В первом случае хоть блядский цирк с конями в язык запиливай. Во втором случае — это не всегда возможно и желательно.
>>867081
#72 #867081
>>867059

> Имеют жирный RTTI и жирный рантайм, умеющий лазать по RTTI


Вот давно пора вставить хоть какой-нибудь RTTI в стандарт. Пусть не все будут его использовать, пусть не всё можно будет экспортировать, но чтобы он был, чтобы язык можно было назвать портируемым. До сих пор пользуются экспортом 30-летней давности, пиля безобразные обертки. Это нужно было сделать ещё 15 лет назад. Но мудаки вместо 2-3 страниц описания способа экспорта, предпочитают в стандарты засовывать бусты, которые вообще будет невозможно собрать и использовать на половине плюсовых компиляторов.
>>867083
#73 #867083
>>867081

>Вот давно пора вставить хоть какой-нибудь RTTI в стандарт


Хоть какой-нибудь там есть.

> чтобы язык можно было назвать портируемым


Портируемо пиши — будет портируемым.
>>867084
#74 #867084
>>867083

> Хоть какой-нибудь там есть.


Никто им не пользуется. Потомучто в нем нету существенного

> Портируемо пиши — будет портируемым


java-господа тут могли бы тебе опорожниться прямо в рот. Почему, чтобы код, написанный на языке, который считается универсальным, был портируемым, нужно специально по особенному приседать? Может, что-то пора добавить? Что ты об этом думаешь?
>>867087
#75 #867086
>>867045

>Теперь всю эту залупу передай в либу, написанную на другом компиляторе.


Пошли виляния жопой. Как делегат работает? Работает. О изначальном классе знать надо? Не надо. При чем здесь передача в либу? Ты б еще поплакался что по сети их нельзя гонять.

>Скорее всего, ты не видел проектов размером более, чем 9к строк и которым более, чем 2 года.


Да, да все студенты, один ты порох нюхал. Давай ты лучше приведешь пример когда нужно избирательно деструкторы вызывать, вместе посмеемся.
>>867093
#76 #867087
>>867084

>Никто им не пользуется.


Рантайм пользуется.

> который считается универсальным


Кем считается? Универсальных языков нет и быть не может.

> Может, что-то пора добавить?


Пора. И пропозалы есть, работа идёт.

> Что ты об этом думаешь?


Думаю, бессмысленно эти проблемы обсуждать со школьниками, которые думают, что еда производится из холодильника, деньги из мамки а методы можно вызывать не имея определения класса.
>>867093
#77 #867092
С std::type_info ситуация как с std::uncaught_exceptions. Давно уже везде была информация о числе исключений, только в языке её получить нельзя было.
#78 #867093
>>867086

> При чем здесь передача в либу?


При том, что более менее сложный проект состоит из компонентов, написанными другими людьми в другое время и может быть вообще закрытым

> Да, да все студенты, один ты порох нюхал.


Ещё раз: у тебя реально идиотские представления о чужом коде. В проекте, допустим, размером на 1,5млн строк, которому лет так 12-15 можно увидеть просто всё. Это - типичный С++-проект, который внедрен и продается. Там нет и не будет времени переписать даже 10%.
>>867087

> И пропозалы есть, работа идёт


Единственное, что порадовало за кучу лет - это std::thread. Но в половине моих рабочих компиляторов оно не появится никогда.

> методы можно вызывать не имея определения класса.


Делегаты в языках здорового человека -вызывают. Что с ними не так? Типичный use case: есть какая-нибудь охуенная апликуха, которая что-то считает. Сложная, богатая. К ней надо запилить графический интерфейс. От GUI нужно несколько финальных событий и пусть его напишут отдельно. Уместно к выходам гуя прикрутить делегаты и здорово, если гуй ничего не будет знать про классы мощной аппликухи, а классы аппликухи не будут наследоваться от какого-нибудь ебанутого CQtSuperMegaAnscestorOfAllObject.
#79 #867111
>>867093
Я тебе ещё раз говорю. Неявно описания всех классов загружаются в рантайм. В .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 тебя, почему-то, устраивает.
#80 #867119
>>867093
Если тебе опять не нравится то, что я говорю про шарп, ок: в твоём блядском дельфи тоже ВСЁ наследуется от TObject.
#81 #867145
С++ - параша.
Haskell - намного лучше.
В нём типы, а в ЦэПлусПлус - ООП, а ООП, как известно, ПАРАША!!
(Автор этого поста был забанен. Помянем.)
>>867230
#82 #867208
http://www.cplusplus.com/doc/tutorial/pointers/

Я заметил что на этом сайте много годных статей которые гораздо проще, понятнее и конкретнее всё объясняют чем в любых книгах которые я читал, есть ли переведённые статьи с этого сайта на русский язык? Уж сколько десятилетий ведь прошло, неужели нету?
>>867215>>868225
#83 #867215
>>867208
Так займись, ебать. Видишь же - ниша пуста
#84 #867230
>>867145
Ну во первых это был вопрос, есть или нету перевод этих статей, мне слабо верится что это до сих пор не перевели. Даже если не перевели и этим займусь я, то куда я это выкладывать буду?
>>867232
#85 #867232
>>867230
Учи английский.
Ведь, как известно, самыми лучшими программистами становятся гуманитарии.
#86 #867374
Как же заебали вскукареки всяких даунов. Если кресты - хрень, почему на них пилят движки для топовых игр?
#87 #867382
>>867374
У крестов своя ниша. Производительность крестов нахуй не сдалась практически нигде, кроме как игор, эмбеда, и всякого спец-софта
>>867394
#88 #867392
>>867374
Топовые игры топовые не из-за крестов, а из-за шейдеров и художников. А так хоть на Java перепиши.
#89 #867394
>>867374
Игровые движки, исключительно редкий случай, когда специфика предметной области более-менее укладывается в ОО-парадигму.
>>867382
Бля, причем здесь кресты и производительность? Кресты - неудачная ОО-надстройка над СИ, плюс шаблончики и исключения.
#90 #867395
>>867394

>неудачная


Пруфы
>>867421
#91 #867408
>>867394

>Игровые движки, исключительно редкий случай, когда специфика предметной области более-менее укладывается в ОО-парадигму.


Не укладывается. Современные движки data-oriented, и пишутся на С++ чуть выше сишки.
#92 #867410
>>867394

>неудачная ОО-надстройка над СИ


За счет шаблонов там можно использовать вполне нормальное ООП с миксинами. Удобнее джавовского.
>>867421
#93 #867413
>>867394
ты на си ебанешься писать хоть что-то сложное. Оно очень быстро превращается в нечитаемый пиздец
>>867416>>867421
#94 #867416
>>867413

>ты на си ебанешься писать хоть что-то сложное


Ядро ОС - достаточно сложный проект?

>Оно очень быстро превращается в нечитаемый пиздец


С крестами абсолютно та же фигня может быть. Только с С++ еще можно с десяток несовместимых языков наизобретать и запихать в проект, а с си сложно что-то замудрить.
>>867417>>867419
#95 #867417
>>867416

>Ядро ОС - достаточно сложный проект?


Нет
#96 #867418
>>867374
Кресты не хрень, шаблоны и static time duck tymping - это гениальнейшее изобретение, которого нет практически нигде. Под ту же CUDA ни на каком другом языке писать не удобно.
>>867422
#97 #867419
>>867416
Твои швабодные ядра пишут на сишке всем миром десятки лет, и то постоянно что-то ломается в них. А коллектив из десятка хорошо организованных крестоблядков напишет в недрах корпорации проект такого же уровня за несколько месяцев.
>>867420>>867428
#98 #867420
>>867419
А потом компания обанкротится.
#99 #867421
>>867410

>За счет шаблонов


>>867395

>Пруфы


Ну вот например шаблоны - низкоэффективная переусложненная недофункциональщиность на препроцессоре от СИ. Наверни Template Haskell и охуей.
>>867413

>на си ебанешься писать хоть что-то сложное.


Все сложное как раз на СИ и написано.
>>867423>>867424
#100 #867422
>>867418

>шаблоны


>гениальнейшее изобретение, которого нет практически нигде.


сук, пздц
#101 #867423
>>867421

>Наверни Template Haskell и охуей.


Ты откуда вылез, из 2010? Хаскель он блядь рекламирует в С++-треде. Нахуй никому твой хаскель не нужен, и не нужен будет, потому что говнище это ебаное. TH так тем более, он не нужен самим борщеедам.
>>867432
#102 #867424
>>867421

>Template Haskell


Быдло, не упомянай это всуе.
>>867432
#103 #867428
>>867419

>А коллектив из десятка хорошо организованных крестоблядков напишет


А потом десяток других дополнит, а потом придет кто-то еще и поправит, а потом туда придешь ты, и поймешь, что проще повеситься, чем это говно ковырять.
>>867430
#104 #867430
>>867428
Напоминает нытье из перезвоним-треда. Нормально все.
>>867431>>867432
#105 #867431
>>867430

>Нормально все


Просто ты крестового легаси не видел с разного сорта акробатикой на шаблонах.
>>867446
#106 #867432
>>867423
>>867424
Ну охуеть, че вы так возбудились-то?
>>867430
Из-за крестоблядков перезвоним треды и появились.
>>867460
#107 #867446
>>867431
Что значит "не видел"? Я произвожу это говно 8х5 в промышленных масштабах.
#108 #867457
>>866899
Что это значит?
>>867655
#109 #867460
>>867432

>Ну охуеть, че вы так возбудились-то?


Ты пришел в крестокред, а не я пришел в хаскель-тред. Хаскель-тролинг устарел еще до того, как ты начал программировать. И тут ты удивляешься, а хули тебя хуйцами кормят. Ты быть хоть придумал что-то нормальное.
>>867473
#110 #867473
>>867460

>Сказал хаскель


>@


>Иди нахуй


Понятно короч, местные коестовыблядки ничем не отличаются от местных же хаселофорсеров. Ебанутые неадвекваты, исходящие на визг при отсутствии аргументов.
>>867485>>867488
#111 #867485
>>867473
Это называется парадокс Блаба.
Где-то была статья про этот парадокс и раст, от одного из разработчиков тайпскрипта, там основная часть в том, как он пытался доносить людям новые вещи, очень рекомендую.
>>867490>>867645
#112 #867488
>>867473
Внимательно прочитай 5-й пункт памятки ньюфагу. Думаешь, для кого он был написан? Для таких идиотов, как ты, которые заходят в тематический тред просто покормиться.
#113 #867490
>>867485
Парадокс блаба - это про лисп, из статьи 2001 года. Только, внезапно, лисп как не был нахуй нужен в 2001, так и не нужен в 2016, а кресты как были нужны в 2001, так и нужны в 2016. Вот такой вот парадокс.
>>867491
#114 #867491
>>867490
Из 2001 года и до сих пор верно. А ты, судя по всему, так и не понял о чём она если пишешь такую хуйню.
>>867506
#115 #867506
>>867491
Она основана на ложных предпосылках, что языки ранжируется по фичастости, программист на более фичастом языке круче. Из которой следует, что лисперы - боги программирования (ведь фич в лиспе жопой жуй), а не-лисперы, нихуя вообще в этом мире понять не могут, ведь они не знают всех фич лиспа.
Только, дело-то какое, языки не ранжируются по фичам. У С++ фич больше, чем у С, но это не значит, что С++ лучше всегда и везде. Это разные языки с разными нишами.
Второй момент, что не все фичи одинаково полезны, а некоторые и вовсе взаимоисключащие. Поэтому никакого ранжирования и нет. Лисповые макросы, например, - это мечта аутиста, желающего замкнуть всю разработку на себя. Они - говно. И лисп - говно. Поэтому творение автора было переписано яху на С++. И сейчас никто лисп не использует, хотя казалось бы, в корпорациях могут позволить себе отделы яйцеголовых, но даже tensorflow написан почему-то на питоне. Примерно то же относится к хаскельной изоляции IO. Говнофича, Scala это доказывает.

Вот эти два момента перечеркивают эту статью нахуй. Если в 2001 это было не так очевидно, то сейчас-то хули, пора бы уж поумнеть.
>>867641
#116 #867509
Да чего вы бугуртете-то, заебись же. Крестотред оживает на глазах, скоро шапку перепилим, выкатим новые книжки, нарисуем мемесы про Святую Троицу - заживем! Какая жизнь-то настанет, братцы! Можно будет каждый день заходить в крестотред и читать сотню новых постов срача, ощущая приятный холодок на кончиках пальцев, которые уже рвутся печатать проклятия в адрес хачкелепидоров и залетных байтокрестьян из сишного треда. А потом D-кун ворвется с очередной охуительной историей, и подгорит у всех.
#117 #867523
Здравствуйте, можете подсказать как сделать так на С++, вот сделал небольшой пример на C#:

http://pastebin.com/Cf9K9q9P

т.е. мне нужно наследоваться от базового класса находясь внутри него, выставлять классы Female и Male наружу не вариант т.к. очевидно что их там будет много одинаковых.
>>867531
#118 #867531
>>867523
Ну и в чем проблема? Алсо константа так и напрашивается быть static.
>>867535
#119 #867535
>>867531
Вкладываю класс 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
{

};
#120 #867545
>>867535
Не очень похоже на C++, ты бы хоть почитал как это все делается, тогда и проблем не будет.
#121 #867594
>>867535
проиграл с этого кода
#122 #867595
#123 #867610
>>867535
лолшто
код больше похож на некую смесь сижки с пускулем, классы как минимум объявляются так:

// объявление классов в С++
class /имя класса/
{
private:
/ список свойств и методов для использования внутри класса /
public:
/ список методов доступных другим функциям и объектам программы /
protected:
/список средств, доступных при наследовании/
};

класс в классе это мощно было
>>867616
#124 #867615
>>867535
От класса можно наследоваться только после объявления, ниже }; если он не темплейтный.
#125 #867616
>>867610

>класс в классе это мощно было


Можно хоть внутри функции класс объявлять.
>>867629
#126 #867629
>>867616
можно-то можно. но не всегда это выглядит красиво и понятно
>>867647
#127 #867641
>>867506
Ты так нихуя и не понял. Печально.
#128 #867645
>>867485

>статья про этот парадокс и раст, от одного из разработчиков тайпскрипта


Смешно там - он глядит на раст с перспективы С++, а Александреску - со стороны D. Александреску верно замечает, что раст "skipped the leg day", поскольку кроме борроу чекера в расте все очень куцее по сравнению с ди, а автор пытается в ответ сравнивать раст с крестами. Становится ясно, что у него тот самый blub paradox, поскольку ди он не видел, и с его перспективы на раст взглянуть не может.
>>867648
#129 #867647
>>867629

>но не всегда это выглядит красиво и понятно


Пока лямбы не завезли, все так их и делали, инплейс структурой.
#130 #867648
>>867645
На ди и не надо смотреть — это просто красивые плюсы со всякими хуишечками. Там вообще нихуя отличий кроме синтаксического сахара. ну да, а ещё олександерску работает над О-нотацией в, блядь, языке, когда сам язык до сих пор сырое говно. Как бы намекает, кто же тренеровки ног пропускал-то
#131 #867649
>>867093
Везде, где есть делегаты из коробки - есть свой урод, но встроенный в язык.
Собственно в qt ради этого и есть QObject.
#132 #867653
>>867648

>На ди и не надо смотреть — это просто красивые плюсы со всякими хуишечками


Про раст можно так же сказать. Но им реально неудобно пользоваться без миксинов, нормального метапрограммирования и с ебущим мозг чекером. Он скорее ближе к сишке, чем к ди и крестам.
>>867662
#133 #867655
>>867457
Хедер почитай, там же всё понятно какие методы вызывать чтобы у карты изменить координаты.

Если твой вопрос заключался в том, как получить координаты в Qt - то используй http://doc.qt.io/qt-5/qtpositioning-index.html
#134 #867656
>>867648
D ахуенен.
Единственный минус D - что его не поддерживают многомиллионные компании, и поэтому на нем никто не пишет.
>>867662>>867665
#135 #867662
>>867656
Единственный минус ди — отношение к нему его же авторов. Один не хочет выбрасывать свой хуёвенький бэкэнд любимую игрушку, второй работает над О-нотацией в языке и тд.
>>867653
Я же говорю — просто сахар над костылями из плюсов, миксины всё те же корявые шаблоны с красивой записью.

Посмотри например на какой нибудь libdparse, из dcd там сплошь и рядом миксины — и просто сравни это с парсером на любом языке с адт, макросами и паттернматчингом, тем же парсером компилятора раста на расте. %%не настолько кошерно как в окамле с полноценным хиндли-минлером, но всё равно другой уровень.

Попытки оставаться с плюсами даже таким образом — это и есть парадокс Блаба.
>>867669
#136 #867665
>>867656

>D ахуенен.


Говно без задач.
#137 #867669
>>867662

>парсером на любом языке с адт, макросами и паттернматчингом


Да, все любят использовать функциональщину для компиляторов. Но это нишевая задача, поэтому кроме компиляторов на функциональных языках мало что пишут. На той же скале в реальных задачах полиморфизм используется гораздо более широко, чем паттерн матчинг.
>>867691
#138 #867691
>>867669
Парсеры — нихуя не нишевая задача, и ими применение всех этих фич не ограничивается. Как можно связать паттерн матчинг с полиморфизмом? Это вообще нонсенс.
>>867715>>868022
#139 #867715
>>867691

>Парсеры — нихуя не нишевая задача


Ты в какой-то совсем другой сфере крутишься видимо.

>и ими применение всех этих фич не ограничивается


Конечно, нет. АДТ и матчинг - удобная штука, не спорю.

>Как можно связать паттерн матчинг с полиморфизмом?


Выполняется разный код в зависимости от типа и там и там.
>>868017
#140 #867982
Господа, помогите. Пишу в Qt 5.6, использую библиотеку для отображения оффлайн карты https://github.com/raptorswing/MapGraphics
Подскажите, как отметить на ней точки? Нужно рисовать при помощи QPainter поверх карты, а потом менять тайлы ? Или что?
Картинка для привлечения внимания
>>868125
#141 #868013
>>867648
Ди - это не плюсы, это хуита со сборщиком мусора. Раст в этом плане хотя бы пытается, ди же метит в нишу удобного для С++-программиста сишарпа. Но С++-программистам не нужен шарп.
#142 #868017
>>867715

>Выполняется разный код в зависимости от типа


Если есть явный матчинг типа, то это не полиморфизм.
>>868019
#143 #868019
>>868017
Это ad-hoc полиморфизм, самый лучший полиморфизм.
#144 #868022
>>867691
Парсеры - нишевая задача для крудошлепов. У нормальных людей парсеры всего, чего можно, уже написаны.
Вот обработка AST, да, часто встречается, и без паттерн-матчинга не очень.
4 Кб, 222x227
#145 #868027
Приветствую, анонимные пользователи анонимного форума двощ. Я пару лет назад брался за плюсы, прочитал в качестве базы Прату читал некоторые "продвинутые" книги из шапки, но потом забил. Вот пересматриваю свои заметки-конспекты по тем книгам, хочу вкатится назад. Нужна практика. Посоветуйте с чего начать.
Инбифо: не спрашивать советы на двоще
сделать бочку@соснуть хуйцов@свичнуться на хаскле
>>868138
#146 #868106
Ввожу три слова в программу, как сделать, чтобы они выводились в алфавитном порядке?
>>868109
#147 #868109
>>868106
запихнуть в std::vector<std::string> и сделать sort
>>868112>>868113
#148 #868112
>>868109
Только начал изучать C++. Эта задача выложена в учебнике для ньюфагов Страуструпа на первых страницах. Неужели нет способа проще?
>>868114>>868206
#149 #868113
>>868109
Ну, допустим, это будет не в алфавитном.
#150 #868114
>>868112
Это и есть самый просто способ.
>>868133
#151 #868125
>>867982
БАМП
#152 #868133
>>868114
std::set еще проще, если слова не повторяются.
#153 #868138
>>868027
код пиши
>>868369
#154 #868206
>>868112

>Неужели нет способа проще?


Ну можно вручную побуквенно сравнивать.
#155 #868225
>>867208

>Русский язык

#156 #868232
Как правильно называется "операция взятия адреса"? Т.е. амперсанд перед переменной, что-то я погуглил и не нашёл этого. Я хоть и вчера узнал что такое программирование, но говорить как сеньор хочется уже.
>>868295
#157 #868239
>>866654
Мне не бомбит.
мимопитончик
#158 #868243
>>866721

> Наркоманские конструкторы.


Не используй.

> Множ. наследование - хуита


Не используй.
Ведь в крестах "не платишь за то, что не юзаешь". Как вообще можно критиковать излишиства в виду этой пафосной фразы.
#160 #868369
>>868138
Я не знаю с чего начать. У меня paralysis by analysis когда думаю свою хуйню написать. А писать всякие олимпиадки, оно нужно вобще?
>>868383
#161 #868383
>>868369
Зайди на апворк и посмотри что людям нужно, что-то подобное запили.
#162 #868531
а почему тред о не C#.
С++ устарел и не моден.
>>868588
#163 #868588
>>868531
Бля, точно....
Срочно перекат, блеать!
#164 #868627
Перекатываю вопрос.
С какого хуя надо после переопределения оператора () писать хуй()(x), а не хуй(x)?
>>868631>>868632
#165 #868631
>>868627
хуй() создает инстанс хуя, у которого вызывается метод - оператор (x).
>>868633
#166 #868632
>>868627
Иначе хуй(х) вызовет конструктор хуя.
>>868633
#167 #868633
>>868631
>>868632
А, и правда, а я и не подумал, что первые скобки - для конструктора.
А если объект создан, то уже всегда пишется хуй(х), да?
>>868714
#168 #868714
#169 #868744
Ну и петушиный же язык у нас, господа. Прохожу всякие квизы, напрягаю все свои знания и результаты в районе 6-8 из 10. Выше — никак.
>>868805
#170 #868755
В книге уильямса есть такой код — http://ideone.com/F6SywS
Собственно, вопрос по 24-ой строчке, почему место вставки в указано end()? new_lower_chunk.data — это пустой список, .begin() == .end(), так что разницы, собственно, нет, но ведь в точно такой же ситуации на 17-ой строке, вставляя элемент в пустой result, было написано result.begin(), так что это не просто его стиль такой. Чем же он руководствовался, в чём семантика использования new_lower_chunk.data.end() в той ситуации? Или я зря вообще думаю над этим?
#171 #868805
>>868744
Просто ты туповатый, это бывает. Разрабатывай очко крестомышление велосипедами на шаблонах шаблонов.
#172 #868806
>>868805

>Просто ты туповатый, это бывает


Ставлю очко Страуструпа, что ты обосрёшься на чём угодно сложнее hello world-ов. Небось даже что такое ADL не знаешь.
>>868967
#173 #868967
>>868806
Это чё, способ определять какую из перегруженных функций вызвать?
Пиздец, понапридумывали ненужных терминов, вместо того, чтобы убрать всякое гавно.
#174 #869008
>>868805

> Разрабатывай очко крестомышление велосипедами на шаблонах шаблонов.


Сложности программирования на темплейтах говорят только об их слабой выразительности: для тривиальных действий нужно написать десяток темплейтов.
И гордиться умением кодить на них это как гордиться умением писать нетривиальные программы на brainfuck.
>>870034
#175 #869025
>>868805
Сколько ты на http://cppquiz.org/ набираешь, умник?
#176 #869251
Есть какие-нибудь крутые проекты в которых qt используют или он только для гуев в хэлоувордах годится?
#177 #869255
>>869251
Telegram desktop
126 Кб, 1042x689
#178 #869295
Почему при сложении float а=50,25 и float б=11,17 вместо 61,42 получается 61,419998? Для типа double все норм (Пример из С. Пратта - "Лекции и упражнения по С++. Издание 4, Platinum Edition, стр. 111").

В книге поясняется, что мол потому, что 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]
>>870378>>876437
112 Кб, 362x621
#179 #869400
>>869251
viber desktop, на маке по крайне мере точно. При чем скорее всего open source версия
#180 #869429
>>869251
Battle.net агент, ЕМНИП.
#181 #869521
>>869251
https://ru.wikipedia.org/wiki/Krita
лям строчек кода +-
#182 #869580
>>869251
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 .
#183 #869609
Привет, пацаны. Тут такая штука, работаю в эрикссоне, я понимаю, что меня легко можно обоссать. Но я работал на решении трабл репортов от операторов и суть такова, что скоро сменю проект и буду делать апликации для оператора, вроде oss/bss. И тут дело в том, что нужно подготовиться.

Всё очень сильно изменилось, я работал со старыми плюсами. старой разработкой, и со специфической штукой, RSARTE, где плюсы просто пара строчек кода, и мне надо было разбираться в продукте, а не кодить.

Я сделал небольшой фичер и понял как я дико сосу. Ибо реквайрмент к коду далеко не тот, который был даже в 2013, когда был только свой фреймворк для теста, задебажил, хуяк, хуяк и в продакшн.

Теперь блядь, надо написать современно на с++11, прогнать clang static code analysys, прогнать lint, purify, purecov, все заюниттестить gtest, valgrind и я тут понял что соснул. Я не умею писать качественный софтвар и не умею все это делать.
Есть у кого может какие книжки или гайды для быстрой пробежки по этим всем технологиям, ибо та же документация по том, как писать фильтр для линта или валгринда, это блядь сотни тонн инфы, есть путь более краткий, нежели курить мануалы лет 5?
#184 #869635
>>869609
Из перечисленного курить манулы 5 лет по мне нужно только для с++11 и валгринда.
#185 #869935
Через какую прогу пропустить исходники чтобы она их красиво отформатировала?
>>869941
#186 #869941
>>869935
uncrustify
>>869944
#187 #869944
>>869941
Какая-то там сложная инструкция. Что ввести в консоль чтобы он сделал пиздато?
#188 #869947
>>869944
Надо сначала конфиг написать.
https://github.com/uncrustify/uncrustify/blob/master/documentation/htdocs/config.txt список настроек
>>869949
#189 #869949
>>869947
Чё-то сложно, проще просто код сразу красивым писать.
#190 #869950
>>869944
Да, жаль, он не умеет в C++11. А других таких настраиваемых инструментов нет. clang-format не умеет нихуя, astyle умеет ещё меньше чем clang-format.
>>869951
#191 #869951
>>869950
У меня кстати кланг даже компилировать не хочет и жалуется на что-то в файле iostream в папке /gcc/include/
#192 #869952
>>869944
Можешь попробовать тот же astyle. У него есть набор пресетов. Типа --style=kr и ещё какую-то опцию, чтобы он табы вместо пробелов использовал.

Но максимум что он сделает — расставит фигурные скобки с сделает отступы. Никаких изысков типа переноса аргументов функций или выравнивания по бинарным операторам.
#193 #870033
>>869609
чувак, ты работаешь в эриксоне
блядь, да ты бог по сравнению с местными уебками, что bsort на крестах осваивают
кого ты собрался здесь спрашивать, лол
#194 #870034
#195 #870042
>>869609

>буду делать апликации для оператора, вроде oss/bss.


А я думал у нас там всё на джяве.
#196 #870049
Гуру разработки на плюсах (в макосе) ответьте мне на вопрос, пожалуйста.
У меня сейчас стоит CLion, который использует встроенный эппловский компиллер (xcode) со всеми его вытекающими.
Он сейчас как я понял довольно сильно отличается от обычного g++ линуксового.
Как мне разрабатывать клевый кроссплатформенный с++ код на макосе? Есть идея даже просто докер юзать для компилленга.

Или просто забить и писать под эппловский компиллер?
Конечно с расчетом что с моим кодом будут работать ребята с линукса и т.д.
#197 #870050
>>870049
*писать
#198 #870223
>>870049

>эппловский компиллер (xcode)


пиздец
>>870324
#199 #870229
>>870049
там разве нет шланга?!
>>870278
#200 #870278
>>870229
Он уже занят.
#201 #870303
Крестобояре, придумайте мне задачу на MVC-паттерн.
#202 #870324
>>870223
эпловский g++/gcc. эпловская версия. тебя что не устраивает?
>>870327
#203 #870327
>>870324

>эпловский g++/gcc


Они GNU-шные.
#204 #870328
>>870049
как я понял надо юзать cross gcc. остается только понять как все это грамотно сделать.
>>870335
#205 #870335
>>870328
Ты долбоёб или что? У тебя из коробки последний clang с поддержкой последнего стандарта, с автоматическим автообновлением и поддержкой вендора, но нет блядьь, хочу писать хуйню и жрать говно.
>>870336>>870338
#206 #870336
>>870335
Чё нервный такой?
21 Кб, 842x78
#207 #870338
>>870335
хм. ты мне хочешь сказать что они идентичные?
пиздабольством попахивает.
>>870344
#208 #870344
>>870338
Ты долбоёб? хотя что я спрашиваю
>>870346
#209 #870346
>>870344
ты мне ответь. есть ли разница между gcc, встроенный в макос и gcc.gnu.org ?
что ты тут кукарекаешь.
#210 #870347
>>870346
Есть. На gcc.gnu.org он в исходниках.
>>870351
#211 #870348
>>866558
Пишу на сях: gnu nano, ssh, mc, gcc
>>870471
#212 #870349
>>870346
и если я буду писать со встроенным тулчаином код, соблюдая все стандарты. скомпилится ли он линуксоида?
>>870350>>870353
#213 #870350
>>870352
#214 #870351
>>870347
только в этом разница думаешь? ох не могу с тебя
>>870355
#215 #870352
>>870350
Удачи тебе с этим. hello world у всех запустится.
>>870355
#216 #870353
>>870346
В OS X компилятор из коробки - Clang. cc и c++ - это clang и clang++, которые идут в стандартной поставке. Это не GCC.
>>870349
Он полностью соответствует стандарту, да. Хотя зависит в первую очередь от используемых средств, а не языка.
>>870356>>870358
#217 #870355
>>870351

> не могу с тебя


Не можешь — научим.
>>870352

> hello world у всех запустится.


А goodbye world?
>>870364
#218 #870356
>>870353
ну так речь идет о gcc
#219 #870358
>>870353
код с
using namespace std;
bind(...)
выдаст error в макосе.
>>870362
#220 #870362
>>870358
-std=c++11 в ключи компиляции, мань. На линуксе с GCC тоже ошибка будет.
>>870364>>870376
#221 #870364
>>870362
>>870355
Хватит кормить жирного пидора, очевидный же троллинг.
#222 #870376
>>870362
ничего не изменится
#223 #870378
>>869295
А весь пак выложить можешь?
#224 #870394
Как f вне класса определить?

http://ideone.com/tgavDi
>>870398>>870517
sage #225 #870398
>>870425
#226 #870425
>>870398
Спасибо
#227 #870471
>>870348
Это для арча применимо? Расскажи поподробнее, я же зеленый.
>>870480
#228 #870480
>>870471
gnu nano - консольный текстовый редактор с подсветкой синтаксиса
mc - midnight commander - консольный файловый менеджер, который удобно юзать
Гуя у меня нет и монитора тоже - сижу удаленно через ssh сам на windows 7
#229 #870483
>>870480

> ssh


А реальный комп к которому ты подключаешься где?
#230 #870500
>>870480
Спасибо.
64 Кб, 1443x817
83 Кб, 1463x936
#231 #870503
Как сделать, чтобы во втором варианте (где e^x), работало как на первом пике?
sage #232 #870517
>>870394
Кстати, в C++17 завезли auto в шаблоны. Вместо
template<typename T, T t>
можно писать
template<auto t>
#233 #870627
Сап, господа. Нужно запилить аналог консольной Dir в винде, чтобы так же выводило дерево файлов и папок, но соответствующих маске. Dir выводит по маске . т.е. все файлы
Как я понял мне нужно разобраться что такое классы и запилить рекурсивный поиск с итератором.
В плюсах шарю на уровне циклов и ввода/вывода массивов, что делать и читать? Желательно подача инфы для мммаксимум тупых вроде меня.

может кто напишет мне, няшки?
>>870643
#234 #870643
>>870627
find . | grep "maska"
>>870661
#235 #870644
>>870480
Как же непривычен gcc на арче по сравнению с g++ бунты. Еще я опробовал gnu nano с подключенным синтаксисом. Синтаксис включен, но все руками вводить заебывает, неужели там нет автозполнений? Например я открываю скобку и у меня открывается вторая, а курсор между ними? Может я чего не так включил или что-то упустил?
#236 #870661
>>870643
Не то.

Сделал такую штуку, но пока просто выводит дерево заданного каталога.
[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]
>>870713
#237 #870663
Аноны, расскажите пожалуйста, почему вы так сильно бомбите от шаблонов? Я сам эмбеддер, работаю сейчас с довольно большими проектами, но написанными на чистых сях. Ради интереса параллельно почитываю про плюсы, и для диванного теоретика вроде меня шаблоны выглядят очень привлекательно. А потом я захожу в тред и вижу тонну хейта и ненависти к этим внешне безобидным темплейтам. Также реквестирую примеры кода, чтобы наглядно убедиться в их уебищности.
>>870698
#238 #870689
Хочу изучить как бинарный код переменных записывается в ячейки памяти и как он там хранится, я хоть теорию по этому делу просмотрел, но хотелось бы на практике глянуть как и что устроено. Подскажет кто?
#239 #870698
>>870663
boost mpl
#240 #870713
>>870661
Теперь гугли что такое рекурсия.
575 Кб, 532x532
#241 #870714
Хочу написать json либу. Возникла проблема хранения данных. Вижу следующее (не очень элегантное) решение http://ideone.com/dejXeQ . Очевидный минусы - жирный интерфейс Value (с другой стороны лучше чем простыня из dynamic_cast'ов) и работа с вложенными структурами будет просто адски сложной. Пример:
auto name = json["strings"]->object()["name"]->string(); Вместо auto name = json["strings"]["name"] как хотелось бы. %%Пока писал пришла идея сунуть operator[]() в Value). Есть идеи как это все получше сделать или это нормально для языка со статической типизацией? Алсо будет ебля с указателями *Value в контейнерах которые надо будет кому-то уничтожать. Если я, скажем, наследюсь от вектора и пишу самоуничтожающийся контейнер и запрещаю операции копирования (только move, только хардкор), нормально будет?
36 Кб, 616x423
#242 #870730
Что я делаю не так? gcc единственный компилятор для шарпа и крестов на арче, во всяком случае им можно компилировать, а у меня нет. Проверил онлайн компилятором - все нормально, а этот не работает. ЧЯДНТ?
>>870732
#243 #870732
>>870730
g++ main.cpp
>>870733
#244 #870733
>>870732
Вот только сам попробовал и получилось, хотел отписаться, что сам до этого дошел. Тогда поясни за gcc - Что он делает?
>>870735
#245 #870735
>>870733
gcc для С
g++ для C++
>>870744>>870807
#246 #870744
>>870735
Хм, просто где-то читал, что везде кроме бунты gcc компилирует шарп и кресты. Спасибо.
#247 #870791
Хочу изучать программирование. Долго смотрел треды и читал про направление, в конечном итоге пришел к выбору
С или С++
И вот тут я начал теряться. Вроде как Си это чуть ли не основа всего сущего, альфа и омега, но с другой стороны он как я понял устарел, а вот кресты вроде живее всех живых.
А потом аноны, плиз хелп.
Есть ли смысл сейчас вообще изучать Си (не кресты), а если и есть, то стоит начать с С++ или Си?
С меня как обычно, тонны благодарности и нихуя.
#248 #870802
>>870791
Си это корявое подмножество C++. Выучишь кресты - выучишь и возненавидишь Си.
>>870809
sage #249 #870807
>>870735

>gcc для С


gcc это драйвер, им можно и C++ компилировать, если задать нужные параметры.
#250 #870809
>>870802
Правильно ли я понимаю, что кресты это офигенный язык кучей возможностей и немного сложноват для мимокрока, но зато откроет огромные перспективы для него (с учётом, что web меня не интересует )
>>870814>>870836
#251 #870814
>>870809

>офигенный язык


Нет.

>немного сложноват для мимокрока


Сложен он не столько в обычном смысле, сколько в том что вкатится не сложно — сложно написать что-то рабочее без триллиардов багов.

>кучей возможностей


Да.

>но зато откроет огромные перспективы для него (


Откроет возможность найти работу именно в этой области и участвовать в проектах на нём, ни больше ни меньше, как и остальные мэйнстримные языки.
sage #252 #870826
>>870791
Оба говно. Бери хаскель.
sage #253 #870836
>>870809

>кресты это офигенный язык кучей возможностей


С кучей возможностей нарваться на UB
#254 #870889
>>870791
Это плохой язык для обучения программированию. Это хорошая лошадка для зарабатывания денег, так как инфраструктура меняется медленно, а работы много. Начни с чего-нибудь другого.
>>870899
#255 #870899
>>870889
Например
>>870900
#256 #870900
>>870899
HTML5, python, потом, через годик, С, и только потом С++, причем сразу С++11 или какой там стандарт будет.
>>870905>>870933
#257 #870905
>>870900

>HTML5


Это шутка такая? Ещё бы хаскель предложил.
>>870908
#258 #870908
>>870905
Нет, преимущества в следующем:
1. Обучает важности текстовых представлений и пониманию независимости редактора и IDE от языка.
2. Интерпретатор есть на любом компе, ничего не нужно ставить, особенно по сравнению с питоном, который на винде не очень.
3. Это взрослая технология с плавным порогом вхождения.
#259 #870913
>>867535
Такое возникает когда ошибка в неправильном понимании ООП и наследования в частности.
Пол это свойство человека, а не его подвид.
#260 #870933
>>870900
Почему сначала C, а потом С++?
>>870937>>870967
#261 #870937
>>870933
С - это прежде всего кроссплатформенная виртуальная машина, его нужно знать вообще всем программистам. А С++ - это довольно конкретный язык, в котором С-подмножество только мешает и нужно знать, чем они отличаются и никогда их не мешать.
Ну и еще так проще, и после изучения С можно передумать и уйти в Java, например.
>>870947
#262 #870947
>>870937
Хм, что если я начну с SICP + Си (и то и то придется пока что на русском изучать)
>>870954
#263 #870954
>>870947
Я посоветовал вкатывальщику в 30 лет делать игры на HTML5, его дичайше проперло и на такой мотивации он быстро вырос. SICP по-моему скукотища для яйцеголовых, удовольствие я от этой книги получил уже с неколькими годами опыта программирования, для начинающего важнее всего, чтобы было интересно.
>>870957
#264 #870957
>>870954
Вроде слышал, что вкатываться просто в рандомный язык и не иметь никакого базового представления о программировании плохая идея, если хочешь действительно вкатится.
>>870959
#265 #870959
>>870957
JS далеко не рандомный язык. Он не самый хороший, конечно, но хотя бы всяко лучше бейсика, на котором начинали поколения американцев старше 40 лет (у нас больше паскаль был в цене).
sage #266 #870967
>>870933

>Почему сначала C, а потом С++?


Потому что он идиот. Если хочешь учить C++, надо учить C++

Но лучше Haskell
#267 #870986
Почему в chrono всё так усложним? Теперь чтобы узнать текущее время надо строчку из 120 символов писать. А чтобы засечь время работы программы, то эту строчку надо повторять дважды. С ctime такой ебли не было.
http://ideone.com/FoZoBQ
>>870998
sage #268 #870998
>>870986
А зачем ты кастуешь now()? Кастуй только разность.
>>871003
#269 #871003
>>870998
Точно. У них же оператор вычитания дэфолтный есть. Спасибо.
#270 #871060
>>866624
vim или emacs, но ты не осилишь
#271 #871152
Посоветуйте, что почитать про алгоритмы аллокации и различных аллокаторах.
>>871157
#272 #871153
>>870791
Бери питон и не еби мозги.
#274 #871159
>>870791
Не выучишь как первый язык, почти все плюсеры начинали с универов, где до того и так знали либо лиспы и алгоритмы(швеция, напрмер) и им остальось лишь выучить обосцанный язык. Другое дело ты, который нихуя не учил.
Тебя сольют на проектах, если устроишься в более-менее норм контору, проэкты очень сложные в большинстве, потому индусов вообще не зовут, в крайнем случае поляков, ты соснешь как математик.

Возьми чего проще, иди в модные фронт-енды, джаваскрипты, питоны, тебе будет легче.
#275 #871160
Напомните книгу. В одном из прошлых тредов кидали ссылку на блог человека который эти книги залпом читает. Там была книга про с++ и половина этой книги была про дэбажинг. Забыл сохранить. Помнит кто название или блог?
>>871420>>874135
#276 #871248
>>866903
с stl то что не так лол?
Как вообще можно на с++ без stl писать.
Да и кроме буста альтернативы работе с сетью, кроме сокетов, просто нет лол.
sage #277 #871249
>>871248

>с stl то что не так лол?


Два аргумента для обозначения промежутка вместо одного.
>>871256
sage #278 #871250
>>871248

>с stl то что не так лол?


Деструктор std::future, полученного из std::async ждёт завершения треда и вешает всё.
>>871256
98 Кб, 200x191
sage #279 #871252
>>871248

>с stl то что не так лол?


stateless allocators...
sage #280 #871253
>>871248

>с stl то что не так лол?


std::max(A, B) возвращает A, если A == A
>>871255>>871322
sage #281 #871255
>>871253

>A == A


A == B
#282 #871256
>>871249

>Два аргумента для обозначения промежутка вместо одного.


ты же понимаешь, что это сделано для того, чтобы безболезнено заменить один итерабельный контейнер на другой?
>>871250
Ну почему нельзя его просто юзать его в еще одном треде асинхронно?
>>871259>>871260
34 Кб, 584x388
sage #283 #871257
>>871248

>с stl то что не так лол?


Аллокатор — параметр шаблона. Вектор, который выделяет память одним аллокатором, не можно скопировать в вектор, который выделяет память другим аллокатором.
>>871266
sage #284 #871259
>>871256

>Ну почему нельзя его просто юзать его в еще одном треде асинхронно?


В смысле?
>>871261
sage #285 #871260
>>871256

>ты же понимаешь, что это сделано для того, чтобы безболезнено заменить один итерабельный контейнер на другой?


Чтобы можно было взять begin от одного контейнера, а end от другого?
>>871261
#286 #871261
>>871260
Нет. Ну вот был у тебя вектор, а ты хуяк такой и заменил его на list и все норм дальше работает.
>>871259
Тут я обосрался, не так понял вопрос
>>871262
sage #287 #871262
>>871261

>заменил его на list и все норм дальше работает.


А чем использование одного аргумента для обозначения границ итерирования мешает заменить?
>>871267
#288 #871266
>>871257
Ну копировать вектора такое вообще.
В крайнем случаем можно скопировать вектор в еще один вектор с таким же алокатором, а потом переместить в вектор с другим алакатором.
хотя говорить, что это хорошо не стоит
#289 #871267
>>871262
Ну если тебе нужно от одного элемента списка до другого пройти, в своем каком то велосипедном списке, как бы ты эти границы задал? При том, что ты не знаешь количество элементов между ними.
>>871269
sage #290 #871269
>>871267
Парой.
>>871272
#291 #871272
>>871269
Ну так а в чем принципиальная разница, передать в функцию два аргумента или пару?
>>871275
sage #292 #871275
>>871272
В том, что пара — это один аргумент. Её можно возвращать из функции. И передавать в следующую. По цепочке.
>>871277
#293 #871277
>>871275
Звучит разумно.
>>871279
sage #294 #871279
>>871277
Это всё говорит о "качестве" советского образования. Степанов учился в МГУ и разработал STL. Учился бы в Кэмбрижде, тёрся бы рядом с Саймоном Питоном-Джонсом и был бы знаком с ФП — спроектировал бы STL получше.
#295 #871294
>>871248

>с stl то что не так лол?


У каждого она своя, и в одного std::move или оператор = с ним работающий через std::swap, у другого list.lenght() через sts::distance работает, у третьего до сих пор не всё реализовано, тормозит и выделяет память втихую. И это только из того, что как работает, если говорить об архитектуре, кривоте и оверинжиниренге можно ещё 20 таких простынок накатать сходу.

>Да и кроме буста альтернативы работе с сетью, кроме сокетов, просто нет лол.


Их тыщи — даже в том же Qt всё удобно и красиво, с тредпулами и шлюхами, а не чудовищные неотлаживаемые портянки из asio.

Алсо, помню как-то ковырялся в гитхабе фейсбука — все проекты со своей стандартной библиотекой. EA пару лет назад тоже выложила в опенсорс свою. В гайдлайнах мозиллы запрещается юзать STL — тоже своё добро. И так можно ещё долго продолжать — так или иначе это тот ещё показатель.
>>871298>>871314
sage #296 #871298
>>871294

> list.lenght()


list::size обязан работать константно
>>871305
#297 #871305
>>871298
После того фейла в стандарте и прописали, лол. Подождём ещё пока асинки человеческие впилят и заживём-то!
>>871306
sage #298 #871306
>>871305

>асинки человеческие впилят


Это невозможно.
>>871311
#299 #871311
>>871306
Значит подождём пока в язык запилят как в том концепте от мс, и начнём как в шарпе кошерно поживать! лет через 20
>>871313
sage #300 #871313
>>871311
А, это ты, двуличная порватка. Не запилят "человеческих" async, это фундаментально невозможно.
sage #301 #871314
>>871294

>ковырялся в гитхабе фейсбука — все проекты со своей стандартной библиотекой.


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 тоже вполне используется. Так что не "все".
#302 #871322
>>871253
А в чём проблема и что ему ещё возвращать? B? рантайм еггог? Возвращается же всё равно либо по значению, либо константа.
В питоне, например, тоже A возвращается (ссылка на переданный же аргумент).
>>871323
sage #303 #871323
>>871322

>А в чём проблема и что ему ещё возвращать? B?


Да, B.

std::min и max принимают и возвращают ссылки
>>871353
#304 #871353
>>871323
Но почему B-то? Самый примитивный и распространённый алгоритм (луп с if el > tmp_max: tmp_max = el) вернёт A. Конечно, можно заменить > на ≥, тогда B. Но почему одно считается "правльнее" другого? Разве для этого не должно быть просто договорённости?
>>871354>>871358
sage #305 #871354
>>871353
Для консистентности.
Пусть A < B.
Тогда min возвращает ссылку на A, max — на B.
А вот если A == B, то min по-прежнему возвращает ссылку на A, а max... тоже на A. Выгледит как говно.
>>871387
sage #306 #871358
>>871353
Ну или так: возьмём упорядоченную последовательность (массив, список) A1 ≤ A2 ≤ A3 ≤ ...
Если бы max в случае равенства возвращал ссылку на B, то при проходе по этой последовательности по парам соседних величин min бы всегда возвращал левый аргумент, а max — правый. А так возвращаемую max ссылку колбасит в зависимости от того, больше ли последующий элемент последовательности или равен текущему.
>>871387
sage #307 #871359
В общем, "удовлетворительно" Степанову за STL можно поставить. Какая-то работа сделана, но до ума не доведена. Как дипломная работа, которую начали писать за две недели до защиты.
>>871388
#308 #871387
>>871354

>А вот если A == B, то min по-прежнему возвращает ссылку на A, а max... тоже на A.


И? A не является минимальным (максимальным) значением списка?

>>871358

>возвращаемую max ссылку колбасит в зависимости от того, больше ли последующий элемент последовательности или равен текущему.


Ну в этом, вроде бы, и смысл max'а, что он находит наибольший, а не последний, не?

И почему имеено min должен возвращать левый, а не max, кстати?
>>871518
#309 #871388
>>871359
Интереса ради, хотелось бы ещё увидеть, где min/max реализованы так, как ты говоришь. Я как-то не заострял на этом внимание и обычно было всё равно, какой из двух вернётся, так как интересовало лишь значение.
>>871524
#310 #871420
>>871160
Бамп
sage #311 #871518
>>871387

>И? A не является минимальным (максимальным) значением списка?


Я ещё раз говорю: дело в (не)консистентности. Можно вообще было сделать это implementation defined. Вопроса, почему оно defined не возникает?

>>871387

>Ну в этом, вроде бы, и смысл max'а, что он находит наибольший, а не последний, не?


А в случае равенства он должен возвращать правую границу. Тогда его поведение будет совместимо с min.

> И почему имеено min должен возвращать левый, а не max, кстати?



Можно, конечно, в случае равенства min-ом возвращать правый, а max-ом — левый. Но всё же по-дефолту используется сравнение <, а не > и естественно желание сохранить непрерывность min и max до равенства.
sage #312 #871521
О, вот. Нагуглил очень сильный аргумент в пользу того, чтобы 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
sage #313 #871524
>>871388
rust.

Я плотно не изучаю этот язык, но иногда заглядываю туда на тему "а как там сделали X". И каждый раз вижу, что всё, что в це-крест-крест сделали неправильно, там переделывают правильно. min и max не стали исключением.

В общем, ребята учатся на чужих ошибках =)
sage #314 #871537
Оказывается, Степанов покаялся за свой 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
>>871590
#315 #871590
>>871537
Спасибо.
>>871721
sage #316 #871721
>>871590
На здоровье.
#317 #872038
Более менее прошёл теорию в C++, хочу начать делать gui программы на Qt, но не могу его понять, хоть и говорят что у него хорошая официальная документация, но она хороша только как энциклопедия по классам и всему аналогичному. Может быть посоветуете хороший туториал чтобы войти в Qt? Я пробовал смотреть "Шлее М. Qt профессиональное программирование", но исходя из названия там всё слишком профессионально, а ничего другого по Qt я не нашёл.
>>872111>>872113
#318 #872044
Посоветуйте проектов на гитхабе почитать с грамотным кодом.
>>872045>>872075
#320 #872075
>>872044
github.com/Microsoft/cpprestsdk
github.com/aws/aws-sdk-cpp
топчик
>>872078>>873944
#321 #872078
>>872075
Вот за это спасибо.
>>872045
А вот это для спермобляди уже слишком, без травы не разобраться.
#322 #872111
>>872038
Шлее - самая лучшая книжка по Qt. Если её не понял, значит ты просто не достаточно хорошо знаешь С++.
#323 #872113
>>872038
Будешь смотреть на названия книг не читая их — не далеко уйдёшь.
Dmitry #324 #872204
>>866618
Да, это
#325 #873120
Я добавил в код метода класса отладочную печать cout. Почему она не выводится в консоль? 24 и 36 строки
http://ideone.com/q2FrH9
>>873265>>873300
#326 #873265
>>873120
Наверное, потому что ты не вызываешь эти методы? На идеоне твой код не компилируется, если ты вдруг не заметил.
>>873297
#327 #873297
>>873265
ideon не имеет функционала для многофайловых проектов. Этот файл один из трёх.
добавлю ещё два недостающих, собирал в кьюте.
http://ideone.com/PsPa2i usetime1.cpp
http://ideone.com/G4xX0E mytime1.h
#328 #873300
>>873120
Пробовал написать using std::cout и using std::endl в начале кода? Авоська и заработает, раз уж пизда по сиаутам.
Может быть, вообще пересоздай проект.
Кстати, раз уж зашёл такой разговор, задам интересовавший меня вопрос: почему куча студентов с моего потока (но с более хардкорных спецух) поливает говном "using namespace std" и говорит, что может произойти какой-то ниибись конфликт имён? В книгах НИХУЯ такого не видел.
#329 #873301
>>873300

>Кстати, раз уж зашёл такой разговор, задам интересовавший меня вопрос: почему куча студентов с моего потока (но с более хардкорных спецух) поливает говном "using namespace std" и говорит, что может произойти какой-то ниибись конфликт имён?


Мамкины максималисты и каргокультисты. Шли их нахуй.
#330 #873394
>>873300
Представь, что мы работаем над одним проектом но над разными его частями. Я написал свой ОСОБЫЙ вектор для своих класов и засунул в свой неймспеейс. А потом приходит общий код и:

using std;
using yobanamespace;
vector<yobaclass> v
vector<yobaclass> vv;

Не тоже самое, что и

std::vector<yobaclass> v
yobanamespace::vector<yobaclass> vv;
>>873561>>873581
#331 #873561
>>873394
В сишечке ты тоже любишь ОСОБЫЕ printf'ы писать?
#332 #873571
>>873300
В .cpp файлах нарм, в ․h не пишут.
#333 #873581
>>873394

>Представь, что мы работаем над одним проектом но над разными его частями


Очень актуально для laba3
>>873601
#334 #873601
>>873581
Тебя к горшку с малолетства приучали или когда паспорт выдали?
>>873602>>873966
#335 #873602
>>873601

> нет аргументов


> пошли аналогии


Гуманитарий, плиз.
#336 #873623
>>866599
у make есть автоправила. если у тебя в директории лежит hui.cpp и ты наберёшь make hui, то вызовется g++ hui.cpp
или, к примеру, make CXXFLAGS=--std=c++11 hui -- уже с флагами
>>873627
#337 #873627
>>873623
Можешь создать Makefile с одной строчкой:
CXXFLAGS=-std=c++11
и просто набирать make hui. Без этих CXXFLAGS в командной строке.

Почему-то ньюфаки думают, что наличие Makefile или наличие в нём чего-то отключает implicit rules
>>873675
#338 #873675
>>873627
А если ещё добавить строчку
all: hui
то можно будет просто набирать make
#339 #873932
В C# можно сделать метод static и иметь доступ к методу этого класса без создания объекта класса, в C++ так нельзя сделать?
>>873933
#340 #873933
>>873932
Кто тебе мешает-то? Можно.
>>873938
#341 #873938
>>873933
http://pastebin.com/tgwS5qPN
что-то не работает, подскажите новичку
>>873945
#342 #873944
>>872075
И как в этом разобраться? Ничего не понятно.
#343 #873945
>>873938
у тебя не видно класса Method из класса FirstClass.
Пропиши до FirstClass:
class Method;
>>873946
#344 #873946
>>873945
а где и как прописать?
>>873949
#345 #873949
>>873946
Сука ты тупой?
Гугли forward declaration
#346 #873966
>>873601
Проще выучиться или переучиваться?
#347 #873972
Крестохуесосы, почему все ваши гуй-фреймворки такое говно?

Всяким Qt/Gtk/etc хуй знает сколько лет, ничего даже близко похожего на WPF нету. QML — говно для мобилок, не больше.

Разве что sciter радует, хотя он и почти не связан с плюсами. Но его главный минус — количество ебли, несопоставимое даже с ручной сборкой какой нибудь Qt.
>>873975
#348 #873975
>>873972

>Qt говно


>WPF заебись


бля ахахахаха
>>873983
#349 #873983
>>873975
Т.е. по делу сказать нечего?

Чем кутя лучше? Тем что нет нормального WYSIWYG редактора? Кривая хуита вместо IDE, которая нихуя не умеет? Или ещё куча плюшек, начиная от общей оверинжинирнутости которая идёт больше из косяков языка конешно, заканчивая тем, что нет даже нормальных средств для создания банальных хуиток типа dockable-виджетов?
>>873987
#350 #873987
>>873983
С тобой по делу не хочется говорить, потому что ты выдал свою утиную натуру в первом посте. Наплел абсолютной хуйни, а потом захотел конструктивного диалога.
>>873993
#351 #873993
>>873987
То есть по делу ты банально ничего и не можешь сказать, манявратор.
Ладно, у кути есть небольшое преимущество — кроссплатформа только вот оно таковым является ровно до попытки сделать что-то выходящее за рамки стилей системы/наличия встроенных виджетов, которых там с гулькин хуй
>>874007
#352 #874007
>>873993

>Крестохуесосы


>такое говно


>говно для мобилок


>количество ебли


>Кривая хуета


>оверинжинирнутости


На будущее: если хочешь, чтобы с тобой говорили по теме - будь вежлив и конструктивен. Изучи, пожалуйста предмет, прежде чем делать какие-то выводы. Пока я в тебе вижу восторженного студента, который прибежал в тред после пар по дотнету.
Ты не заглянул даже в доки (dockable виджеты делаются одной строчкой), не разобрался что такое qml, не осилил визуальный редактор. Да что уж говорить, ты даже не осилил понять, что qt это фреймворк.

Отвечаю тебе только потому, что мне скучно на работе :)
>>874017
#353 #874017
>>874007

> (dockable виджеты делаются одной строчкой


Если бы ты хоть раз работал с этой хуйнёй - не писал бы этого. Очевидно у тебя знакомство с кутей на уровне "загуглил, всё няшно". Даже отвечать на это смысла нет.

>не разобрался что такое qml


Сразу видно google-driven-developer-a, который опять ни разу с этим не работал но зачем-то что-то утверждает. QML - это говно для мобилок прежде всего потому, что из готового в нём всё ТОЛЬКО для тачскринов, вообще все контролы и виджеты. В старых версиях ещё были нативные вещи вроде тулбаров окон - сейчас их выпилили нахуй, даже нормальный список не сделать - резиновая мобильная параша.
Для десктопного софта что-то уровня си без библиотек.

>не осилил визуальный редактор


В нём банально нет н-и-х-у-я. Ни в кумэловском который даже половину своих же встроенных конртролов отрисовать не может и знать не знает о их пропертях, ни в кутешном особенно добивает то, какими костылями там расположение виджетов присобачивается, и как "каштомизация" кастрированного QSS, который кастрированный CSS без cascading - кастомизация на изменении цвета заканчивается.

> что qt это фреймворк.


В первую очередь гуевый. Я вот не видел пока проектов, использующих Qt как какой нибудь буст чисто ради фреймворка.

Ну вот и поговорил с диванной маней, мне кстати тоже скучно на работе.
#354 #874135
>>871160
Бамп
#355 #874241
Скажу сразу, я не ньюфаня, есть более менее годный опыт программирования(не только на крестах), но не было возможности вникнуть достаточно глубоко. И когда появилось свободное время решил хорошенько засесть именно за C++. Собственно вопросов несколько:
1) Я не до конца понимаю эти приколы с pointer/reference, если для переменных это ясно, то для классов и прочего не совсем понятно. А также все эти приколы с abstract, virtual, override, interface, прототипирование. Есть какие-то годные пояснения/примеры. (В книжках обычно не очень хорошо освещается этот вопрос).
2) На сколько я понимаю, изучения Qt - очень важная вещь, если намереваться связать свою жизнь с крестами. Собственно, более-менее разобрался, что это такое, но документация отвечает на вопрос для чего это нужно, а не как это сделать. Гайдики/ютьбики или устарели или малоинформативны, если действительно что-то годное?
3) Ну и последний вопрос, что еще было бы неплохо знать? Есть вообще какой-нибудь стек технологий для джун/мида?
P.S. Шапку читал, но возможно не очень внимательно.
>>874331
sage #356 #874331
>>874241

>Скажу сразу, я не ньюфаня


Да-да, из дальнейше написанного это так и прёт.
>>874362
#357 #874362
>>874331
Ссылки в шапке частично мёртвые, хотел книжки скачать — и нихуя на дропбоксе
Элемент класса в наследнике #358 #874439
Аноны, нужна помощь. Как использовать элемент класса в наследнике? Выдаёт ошибки " 'int One::a' is protected" и "within this context"

#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;
}
Элемент класса в наследнике #358 #874439
Аноны, нужна помощь. Как использовать элемент класса в наследнике? Выдаёт ошибки " 'int One::a' is protected" и "within this context"

#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;
}
>>874441
#359 #874441
>>874439
#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;
}
#359 #874441
>>874439
#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;
}
#360 #874507
Есть ли где нормальная информация про многофайловые программы?
#361 #874706
Сап, двощ. Помогите разобраться.

Ошибка
Вызвано исключение: нарушение доступа для чтения.

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);
}; */

Вопрос почему не создается ссылка на место в памяти, выделенное для этого объекта? Почему нельзя получить адрес?
>>874709
#362 #874709
>>874706
быстрофикс Hh*
>>874916
#363 #874916
>>874709
По отрывку причин не видно.
Навскидку - возможно, до вызова метода ты где то портишь память (объект то на стеке).
#364 #875064
Не знаю уже что делать! VS2015 е работает, не могу найти решение в интернете. Помогите. Нажимаю на отладку ЛЮБОГО приложения он сначала. говорит. что проект устарел и просит провести сборку, затем fatal error C1083 Не удается открыть файл включение: stdio.h: No such file or directory.
Как же я заебался безуспешно искать решения в интернете. Прошу, помогите!
>>875065>>875186
#365 #875065
>>875064
Он не создает файл в debug и сам на это жалуется. Хз что делать
>>875071
15 Кб, 579x297
#366 #875071
>>875177
#367 #875177
>>875071
Дай угадаю: ты довен и у тебя название юзерской папки на кириллице?
#368 #875186
>>875064
Лог сборки в студию
Ну, естественно, он не создаст даже объектный файл, если не может найти заголовочных файлов...
85 Кб, 300x448
#369 #875270
Что можете по этой книге сказать http://www.ozon.ru/context/detail/id/33852757/? Хочу приобрести её. В данный момент на половину прочитал сворованную версию пикрилейтед, но там нету очень многих моментов, да и устаёшь от решения тяжёлых примеров.
>>875274
#370 #875274
>>875270
Золотая книга. Бери, конечно.
>>875280
#371 #875280
>>875274
Спасибо, а может быть ещё что можешь посоветовать? Куплю в дополнение
>>875355
#372 #875310
Я знаю, что многие считают, что ВУЗы не нужны программистам и проч и проч. Но все же? Какой вуз лучше для программиста. Я, например, знаю основы крестов, перехожу на жаву. на которой собираюсь в дальнейшем работать, учусь в 10 классе. Я не знаю куда поступать. Английский на уровне b1, в свободное время занимаюсь им и программированием. Все отлично с алгеброй. Куда поступать? Советовали Спбгу пм-пу, чтобы в свободное время прогал. Знаю о существовании ИТМО, например. Что мне выбрать? Что можете подсказать по этому поводу?
>>875319>>875402
#373 #875319
>>875310
Российское образование это адъ. Я поучился полтора месяца, забил хуй и забрал документы.
>>875334
#374 #875334
>>875319
И не потому, что ненужно, а из-за античеловеческого отношения, как и в любом порахинском гос. учереждении.
Учи немецкий и едь в германию.
#375 #875355
>>875280
Лучше скачай в Интернете книжки и посмотри как они тебе.
Не понравятся - удаляй, понравятся, то покупай если хочешь.
Я так делал с некоторыми книжками.
#376 #875402
>>875310
Выбирай Итмо. На кт заебут да и вряд ли поступишь, остается на выбор ПИ и ЕНФ. На ПИ проги больше. По поводу ПИ - с предметами по специальности - прога, инфа, етц полное самообразование, преподы молодые ( 22-24 года) им вообще похуй они приходят иногда почитать лекцию,если с работы основной отпустят, все учишь фактически сам. При этом на матмехе прога вообще на нуле, учат паскаль с дедами. На пм пу даже не думай идти. Матан у нас ведет препод с матмеха,вполне сносно. С дискреткой правда все плохо, ведет некомпетентный мужик, который все с листочка очень тихо читает и нет практик.
В общем суть такая - учат хуево везде, что спбгу, что итмо, все ботаешь сам.
>>876172
#377 #875921
Объясните тупому, почему рекурсивная функция

int sum(int n)
{
if ( n > 0 )
return n + sum ( --n );
else
return 0;
}

при sum(6) возвращает 15 (то есть 1+2+3+4+5) и теряет 6 по дороге?
#378 #875929
>>875921
Потому, что лучше не использовать модификацию значения если оно уже использовалось в этой строчке.
Вот так будет работать
n + sum ( n - 1 )
>>875935
#379 #875935
>>875929
То есть это происходит потому, что операция уменьшения значения произошла раньше чем само сложение?
#380 #875950
>>875921

>return n + sum ( --n );


Undefined behavior потому что.
Чем компилируешь, кстати? GCC и клэнг в таких случаях даже разные результаты выдают.
>>876408
#381 #876172
>>875402
спасибо
#382 #876178
>>875921
потому что --n, очевидно же
>>876411
#383 #876232
Вопрос:
Есть поток, создаваемый CreateThread. Есть функция DWORD, в общем все стандартно. В эту функцию я передаю вектор. Получается что-то вроде:

hThread = CreateThread(NULL, 0, thread, &arr, 0, &IDThread);

thread - сама функция. Все вроде заебись, внутри потока работаю с этим вектором, но мне нужно вернуть полученное обратно в arr. Каким образом это можно сделать, так чтобы не создавать ГЛОБАЛЬНЫЙ ВЕКТОР?
>>876503
#384 #876246
как изменить конструктор по умолчанию, созданный средой Visual Studio?
#385 #876408
>>875950
gcc + параметр на c11
#386 #876411
>>876178
я в воскресенье не шучу открыл книжку по c++ и мне не очевидно. поясни пожалуйста
>>876458>>876497
#387 #876428
Вечер в хату,поясните что не так с регулярками в плюсах.
Имеется строка :

regex reg("_0x45a8\[\d+\]", regex_constants::ECMAScript);

Во время компила , визуалка выдает несколько предупреждений:
"warning C4129: [: неизвестная escape-последовательность"
"warning C4129: d: неизвестная escape-последовательность"
"warning C4129: ]: неизвестная escape-последовательность"
и неправильно его интерпретирует. В чем проблема , где я обосрался ?
>>876432>>876501
#388 #876432
>>876428
1. Регулярки в плюсах - хуйня.
2. Гугли инфу про эти самые регулярки в плюсах.
Твой вопрос лежит на поверхности и найти информацию про него - изи.
>>876440
#389 #876437
>>869295
Все правильно. Значащие цифры до запятой тоже считаются.
0.0001 <<<4 значащих
50.0001 <<<6 значащих
#390 #876440
>>876432
Думаешь я не гуглил эту проблему , на cplusplus .com ясно написано ,что экранирование - стандартное , при помощи "\".
>>876501
#391 #876458
>>876411
--n не только передается функции, но еще и меняет значение самого n
>>876497>>876517
#392 #876497
>>876411
>>876458
То, что он сказал, но главное:
Порядок выполнения несвязанных/независящих друг от друга выражений не определён. То есть, в (4/2) + (6/2) может первым выполниться как 4/2, так и 6/2.
Хуёво, наверное, сформулировал, но смысл ясен, надеюсь.
>>876517
23 Кб, 716x72
#393 #876501
>>876428
\\[ \\d \\]
или используй raw string literals
>>876440

>cplusplus .com ясно написано ,что экранирование - стандартное , при помощи "\".


Да. И показан пример экранирования.
>>876510
#394 #876503
>>876232

> с++-тред


> вопросы по winapi


kek
>>876530
#395 #876510
>>876501
Спасибо,Антоша, я дурак ,не досмотрел.
#396 #876517
>>876458
>>876497
спасибо аноны
#397 #876530
>>876503
у вас тут 90% треда вопросы по лабам от студентоты. Нахуй ты меня грузишь?
>>876567
#398 #876567
>>876530
Это ты меня грузишь.
#399 #876585
Для тех , кто хочет вкатиться советую не париться с отдельными компиляторами , компановщиками и редакторами а юзать IDE . Лично я использую вижл студию.
>>876648
#400 #876648
>>876585
лично я начал с Dev-C++ а потом прикрутил нужное к Sublime ибо он няша и субъективно быстрее
#401 #876723
как сложно устроиться джуну в ДС, по сравнению с джавой?
#402 #876739
>>876723
В 3.86 раз сложнее.
#403 #876753
>>876723
на 12ти миллионный город меньше 10ти вакансий джунов на кресты..
>>876874
#404 #876874
>>876753
В беларуси 0 вакансий, только что проверил. а все дело в том, что:
>>876723
Сама специфика плюсов не предпологает джунов. Хотя бы потому что на плюсах простые задачи не решаются, да и простые задачи по меркам Java или C# становятся сложнее и требуют понимания специфики языка.
28 Кб, 630x771
#405 #876929
>>866503 (OP)
Кстати по поводу третьего пика. Кто-то знает были где-то попытки создать (эзотерический?) язык, где объекты сами бы интерпретировали поступающие к ним вполне рандомные сигналы?

Это ведь единственный способ сделать ООП и в частности крестопарашу пригодными к продакшену.
>>877170
#406 #877051
Что qt такое сложное? Не могу вкатиться.
>>877101
#407 #877101
>>877051
Иди вагоны разгружать, это просто.
#408 #877170
>>876929
В продакшене практически всё с ООП, выбегай из манямирка.
>>877652
#409 #877582
Друзья, посоветуете почитать\посмотреть что-нить интересное по модерновому проектированию?

А то мне скоро дадут команду и проект, и надо будет с нуля писать код, а я хочу попробовать сделать не говно, как остальные проекты в конторе.

Александреску и Макконела читал
>>877654>>877673
#410 #877652
>>877170
Ограничено в области пользовательского интрерфейса да. Да и там полная помойка, если код пишется не инструментом дизайна интерфейса, а ручками.

Вопрос остаётся.
>>877754
#411 #877654
>>877582

> модерновому проектированию


> не говно


У велосипедиста всегда будет выходить говно.
#412 #877673
>>877582
какие тебе друзья
ты в парашном треде на парашной доске
иди нах, в общем
#413 #877754
>>877652
А еще бекенды и фронтенды, да и серваки зачастую нагруженные. Что покрывает 70% всей области. Ну вообщем давай беги обратно в манямир, а то как узнаешь правду - ахуеешь и суициднешься.
#414 #877803
Програмач. Я нуфаг с убунтой в машине. Какой лучше выбрать компилятор для с++ и как его установить.
>>877808
#415 #877808
>>877803
sudo apt-get install build-essential поставит тебе g++
>>877812
#416 #877812
>>877808
masterchan@ubuntu:~$ sudo apt-get install build-essential
E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)
E: Не удалось выполнить блокировку управляющего каталога (/var/lib/dpkg/); он уже используется другим процессом?

Почему и как?
>>877815
#417 #877815
>>877812
Синаптик открыт или другой менеджер пакетов, установи через него.
>>877816
#418 #877816
>>877815
Я нуфаг. Объясни.
>>877842
#419 #877842
>>877816
Проследуй в /s там объяснят.
>>877843
#420 #877843
>>877842
Уже установил. Спасибо.
#421 #878178
Посоветуте иде для только вкатившегося. Visual studio какой то сложный, слишком много всего
>>878241>>878269
#422 #878241
>>878178
Это лучшее, что есть. Ебаться со всяким говном типа CODE BLOCKS ты будешь сильно больше
>>878277
#423 #878269
>>878178
CLion используй, его вроде знатно причесали после 2016.2 версии
>>878277
#424 #878277
>>878269

>CLion


Cygwin/MinGW на винде => говно без задач по определению
>>878241
Двачую
>>878283>>878818
#425 #878282
хацкеры посоветуйте какой учебник купить для чайника как я.
>>878400
#426 #878283
>>878277

>Cygwin/MinGW на винде => говно без задач


Минг-то с чего?
#427 #878400
>>878282

>хацкеры


Лал. Местная петушня даже не знает, что инструкция mov полна по Тьюрингу. C++ не нужен, все можно реализовать через mov и индексные таблицы.
>>878430>>878442
#428 #878430
>>878400

> инструкция mov полна по Тьюрингу


нипонел
я думал машина Тюринга должна уметь не только писать, но и читать, причём раздельноо
#429 #878442
>>878400
и много тебе это знание помогает, умник?
>>878463
15 Кб, 434x155
#431 #878615
попробую еще здесь спросить
отцы помогите тотал нюфагу вкатитсяможет что-нибудь получится
в поставке clang++ из коробки я так понял нет стандартных библиотек, а в GCC:g++ есть.
можно их как-нить с консолидировать чтоб и clang все появилось
#432 #878637
>>878615
поставь, блять, студию, и не еби мозг с тем, чего ты еще с полгода-год не будешь понимать.
>>878767
#433 #878667
>>878615
Попробуй iostream.h
>>878714>>878740
#434 #878687
>>878615
Ви болен в .срр файл компилить?
>>878714
#435 #878701
>>878615
попробуй поискать на диске файл iostream. Если он присутствует, значит у тебя где-то пути неправильно прописаны
>>878714
32 Кб, 353x183
23 Кб, 378x96
#436 #878714
>>878701
>>878687
>>878667
вроде разобрались, у него почему-то таргет с из начальной установки стоит на msvc библиотеки.
когда меняешь ему таргеты эти он сразу начинает видеть все GCC инклуды и библиотеки.
странно кароч.
>>878719
#437 #878719
>>878714
причем это как я понял по интернетам началось с последних версий, типо они специально вроде как компилят на msvs чтоб оно сразу работало на msvs, только не понятно как подключать clang к msvs.
>>878721
#438 #878721
>>878719
Это в последних студиях такой функционал появился.
sage #439 #878740
>>878667
Дебил...
#440 #878767
>>878637
+1
хотя пусть страдает, пацам меньше конкуренции если еще одна хуитка не осилит
#441 #878818
>>878277
Хуй его знает что там с MinGW, меня на линупсе только CLion спасает. А вот, к слову говоря, в ебучей студии за дцать лет разработки так и не сделали ебучую линию переноса и ебаные стыдливые табы по дефолту стоят вместо пробелов. В 2013 студии MSVC не поддерживала дефолтные перемещающие операции, да и еще хуева туча косяков (касательно компилятора), а работать приходилось, потому что ебаная CUDA работала только с той версией.
>>878876
sage #442 #878876
>>878818

> табы по дефолту


Ну хоть что-то в студии сделали нормально.
C++ — гавно, потому что... #443 #878877
... для вызова виртуальных функций нужно городить несусветные кастыли ( http://ideone.com/QjLkII )
#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);
}

Крестухи, вы правда думаете, что кто-то будет пользоваться вашим гавноязыком после этого?
>>879429>>879862
#444 #878900
Есть тут те, кто юзал libfuse?
>>878902
sage #445 #878902
>>878900
Я. Но совсем чуть-чуть.
>>878913
#446 #878913
>>878902
Посему, когда я в СВОЕЙ замене write вызываю p write с отличным размером count'а, все ломается и не хочет сохранять. Я хз, как фиксить, ибо и trancate'м менял размер файла, а толку 0
>>878915
sage #447 #878915
>>878913
Нихрена не понял.
>>878918
#448 #878918
>>878915
Ну я создаю свою фс. Переписываю функцию, которая вызывается fuse'ом вместо системного вызова write. В мою функцию, помимо прочего, передаются указатель на массив char'ов, из которого пишем, и количество данных, которые пишем. В ней я выполняю некоторые действия над данными, а потом системной функцией pwrite записываю в файл. Проблема в том, что если в pwrite я передаю больший размер данных, чем в мою функцию, хз почему система не хочет сохранять файл. Пробовал в начале моей функции менять размер файла, но безуспешно. В итоге уже тут спрашиваю хз, пытался норм сформулировать
>>878920
sage #449 #878920
>>878918
Ок, на словах понятно. Покажи код теперь.
>>879060
#450 #878974
Анончик, читаю сейчас "Как программировать на С++" Дейтелов, потом думаю обмазаться Страуструпом. Всё правильно делаю, или есть ещё варианты?
>>878991
sage #451 #878991
>>878974
Есть вариант обмазаться говном.
>>879000
#452 #879000
>>878991
Это я ещё давно сделал. Что дальше, сенсей?
>>879002
sage #453 #879002
>>879000
Начать его жрать.
>>879003
#454 #879003
>>879002
Я из /b пришел, умник. Думаешь, не жру?
>>879004
sage #455 #879004
>>879003
Я в /b/ несколько лет не захожу, не знаю, что там нынче в моде. Особенно после перехода сего форума под крыло mail.ru
>>879005
#456 #879005
>>879004
Всё как всегда, жрём и обмазываемся, жрём и обмазываемся
#457 #879060
>>878920
такое, например, норм робит

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);

использую свою фс как копию реальной папки, но не думаю, что проблема в этом
>>879091
sage #458 #879091
>>879060

>size - 8


А если size < 8 ?
>>879098
#459 #879098
>>879091
на всех тестах было больше восьми
суть не в этом. Хоть я наоборот увеличу size, хотя я до этого вызову ftruncate - результат тот же не сохраняет
>>879100
#460 #879100
>>879098
хотЬ я до этого вызову
быстрофикс
#461 #879429
>>879435
#462 #879435
>>879429
Это в C++14 появилось?
>>879441
#463 #879441
>>879435
В С++03
>>879461
#464 #879461
>>879441
Спасибо!11
Проверим познания крестухов #465 #879837
Я тут уже вбрасывал код с прямым доступом к vtable. Известно, что виртуальные функции попадают в vtable в порядке их объявления в классе. Я определил деструктор первым и после него функцию. Но дёргать их через vtable я могу по 0-му и 2-му индексу. Если я пытаюсь вызвать функцию по первому индексу, код валится. Вот код http://ideone.com/hDGNjK
#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-му индексу?
>>879859>>880183
КРЕСТУХИ! #466 #879847
Ребят, тут на днях решил поковырятся в исходниках одной дудосилки на плюсах, открыл такой - а там, сука, 1000 нативных тредов запускается, причем там вызывается функция с сокетами в блокирующем режиме... Это нормально у вас вообще?
>>880508
#467 #879859
>>879837
а нахуя структуру то юзать вместо класса?
>>879861>>879864
#468 #879861
>>879859
Неправильный ответ.
#469 #879862
>>878877
ч=о за хуйня? нахуя так делаь то? ass.f() отменили что-ли, долбоеб?
>>879866
#470 #879864
>>879859
Т.е. он даже по форме некорректный, т.к. вопросы тут задаю я.
#471 #879866
>>879862

> ass.f() отменили что-ли


Да.
80 Кб, 1440x702
#472 #879930
Наше время пришло! Готовьтесь остаться на помойке истории.
>>880024>>880924
sage #473 #880024
>>879930
Сейчас даунята хаскел подучат и и упадут зп до 70к к 2к18
>>880070
sage #474 #880070
>>880024
Если не сильнее. Haskell же довольно простой язык по сравнению с C++
>>880896>>880906
sage #475 #880183
>>879837

>Внимание, вопрос: что за хрень по 1-му индексу?


Например компилятор сгенерил функцию которая возвращает typeid.
>>880245>>880248
sage #476 #880245
>>880183
Насчёт того, что указатель на std::type_info лежит в vtable ты прав. Но он лежит по -1-му индексу. Неплохое наблюдение, но ответ неверный. Попробуй ещё.
sage #477 #880248
>>880183
http://ideone.com/p1VM1J вот, адрес type_info и что лежит по -1-му индексу.

> компилятор сгенерил функцию


Тут ты тоже прав, это генерирует компилятор и это функция. Мембер-функция (очевидно, раз она в vtable)
>>881107
#478 #880508
>>879847
Такую же парашу можно и на питоне написать. Это не минус языка
#479 #880559
Есть что-то действительно годное и современное по Qt? Интересует работа с виджетами и иже с этим.
>>880926>>880944
#480 #880750
>>866603
Чем плохи стандартные строки? Их используют миллионы разработчиков, и никто не жалуется.
#481 #880826
Аноны, как прикрутить sqlite3 к консольному приложению (на win)? Что и куда положить? sqlite amalgamation скачал , динамическую библиотеку x86/x64 тоже.

Пользую MinGW в портабл режиме, на рабочем компе ничего ставить нельзя поэтому установка Visual Studio. Динамическая библиотека вроде должна быть совместима с gcc.

#include "sqlite3.h"
#include "sqlite3ext.h"
прописал.

Как динамическую библиотеку подключить?..
#482 #880896
>>880070
Двачую адеквата
#483 #880906
>>880070
Если бы платили за сложость языка (а не решаемых задач) — всевозможные яваиндусы и питонисты сдохли бы с голоду.
#484 #880920
подскажите ньюфагу, как хуярить хранилища объектов
>>880921
sage #485 #880921
>>880920
Ногами.
#486 #880924
>>879930

>эти три вакансии, одна из них - рофловая


:)
#487 #880926
>>880559
Читай шлее, а дальше доки.
#488 #880931
анон, что-то я туплю
как написать функцию, которая заполняет поля структуры через scanf и как лучше эту функцию принимать, через указатель?
http://pastebin.com/3ndaKRfH
в VS выделяет book в сканфах и пишет expression must have a class type
>>881041
#489 #880944
>>880559
на qt щас гуй делают декларативненько, что в принципе правильно
с++ тут ни при делах
если "современно" хочешь канеш
#490 #881039
Анон, есть одна программа для декрипта виженера. Нужно при помощи нее расшифровать индивидуальное задание, чтобы от меня отъеблись в вузе, и дальше идти писать ДНС-сервер для ботнета. http://pastebin.com/dpk0sr9f Не хочется вникать в эту ебанину.

Программу писала какая-то мразота, поэтому она падает в функции 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
>>881076
#491 #881041
>>880931

>expression must die

#492 #881052

>C++


Не может в управление памятью
Не может в LALR грамматику
Как следствие, не может в человеческий синтаксис
Не может в денотационную семантику
Не может в настоящие макросы (с темплейтами отсос - не могут в квазицитирование)
Следствие - не может в человеческий полиморфизм (не говоря про higher-order), только убогое кодовысерание.
Не может в referential transparency
Linear typing

Зато может в:
Нетипизированную еблю с указателями
Аппликативный порядок
УТЕЧКИ УТЕЧКИ УТЕЧКИ
Зловонную кучу Стандартов не реализованных в полном объеме ни одним компилятором
Стандарты наполовину состоящие из undefined behavior и implementation-defined
Следовательно, миллиард практически не диагностируемых "приятных" неожиданностей.
sage #493 #881055
>>881052
Обсос бугуртит, пока малварщики делают деньги, не беспокоясь обо всей этой быдлотеоретической ебале. Поссал на твое блядское ебло, мразь.
#494 #881076
>>881039
Ебаный в рот, что за тварь это писала? Когда у этой твари, у этой жопоногой падлы строки передавались через стэк, я везде понаставил ссылки, но, сука, теперь в одной из функций строка делается нулевой. Ааааа, какой дегенерат это писал.
#495 #881105
>>881052
То самое чувство, когда насрал - а тебя игнорят.
sage #496 #881107
>>881052
Студенная былина, сударь.

>>880248
Ответ, кстати, легко гуглится. Все больше убеждаюсь, что умение писать правильные запросы к гуглу намного важнее для программиста, умения решать олимпиадные задачки
>>881114
sage #497 #881114
>>881107

>Ответ, кстати, легко гуглится.


Может озвучишь?
#498 #881168
Настоло время переустанавливать перекатывать шиндовс.
sage #499 #881171
Топим старое говно...
#500 #881175
...и идвигаем прогресс в новое:
ПЕРЕКОТ
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 (М)
#501 #881176
#501 #881176
#502 #882657
ананасы, подскажите пожалуйста, как в qt 5.x изменить цвет у кнопки не используя setStyleSheet
Тред утонул или удален.
Это копия, сохраненная 11 декабря 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски