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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
32 Кб, 600x418
Оффициальный™ нетрадиционный® C++ тред #41 #840964 В конец треда | Веб
Белеет парус одинокий
В тумане моря голубом!..
Что ищет он в стране далекой?
Что кинул он в краю родном?...
Играют волны — ветер свищет,
И мачта гнется и скрыпит...
Увы! Он счастия не ищет
И не от счастия бежит!
Под ним струя светлей лазури,
Над ним луч солнца золотой...
А он, мятежный, просит бури,
Как будто в бурях есть покой!
C++


Старший брат: >>837592 (OP)
Предыдущий: >>821402 (OP)

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 #840967
Отметился.
#3 #841027
как засунуть unique_ptr в вектор?
>>841029>>841171
#4 #841029
>>841027
vector<unique_ptr<MyType>> v;
v.push_back( unique_ptr<MyType>( new MyType() ) );

Например.
#6 #841051
>>841050
Им смешно или больно?
>>841053
#7 #841053
#8 #841125
>>841029
И потом вы будете говорить, что C++ лучше C.
#9 #841155
Хочу перекатиться в кресты с явки. С чего начать?
>>841214>>841220
#10 #841171
>>841027
std::move
>>842201
37 Кб, 403x604
Аноним #11 #841214
>>841155
Начни с установки Gentoo.
>>841251
Аноним #12 #841220
>>841155
Там осиливай make, gcc, gprof, gdb, clang.
Потом читай писанину Страуструпа, после прочтения ознакомся с текущим стандартом C++ 2017 и GNU разширениями.
Готово, теперь читай код GCC, приводи в порядок, было бы хорошо разбить его на куски отдельно для каждого языка компилятор, общее в отдельный модуль запихнуть.
После этого если хочешь разрабатывать GUI apps то изучай Wayland API (оно короткое, 100 Пунктов, да и не обязательно знать все.) и QT5/6 с wayland.
Вот и все.
>>841250>>841251
#13 #841250
>>841220
Не слушай еблана. Выучи вектор и пихай его везде.
>>841253>>843280
#14 #841251
>>841214
У меня центос 7

>>841220
Мне бы сразу после в кутэ вкатиться.
>>841283>>841286
#15 #841253
>>841250
Вектор это такая недоколлекция?
А есть чтоли как в явке коллекции?
Хешмапы, связные списки, очереди, иммутабельные версии?
Или все пихать в вектор?
>>841279
Аноним #16 #841279
>>841253
В плюсах все есть маньк, все.
Выбирай то что быстрее работать будет, если конечно не надо поддерживать говнокод и писать в стиле говнокода чтобы другим говнокодерам небыло "Неприятно".
>>841470
#17 #841282
С,С+, С++, С# это все разные вещи? Нахуя?
>>841284
Аноним #18 #841283
>>841251

>В куте


Ну так учи куте ебана врот, плюсы во многом как джава, так что справишься.
Только под Xorg не пиши, пиши сука под Wayland, сноси центось и ставлий Генту, установи Weston без xwayland для тестировки и Sway или любой современный оконный менеджер с xwayland для работы.
>>841288
Аноним #19 #841284
>>841282
Это совершенно разные языки маньк.
Стоит внимания только C и С++ причем C предпочтительнее.
Аноним #20 #841286
>>841251
Кстати для куте программирование знать не нужно.
#21 #841288
>>841283
Ну я тип хочу под сайлфишОС пилить qml+ c++ аппы.
>>841362
#22 #841290
Ананы, как мне теперь бабло зарабатывать? Ну, вот допустим, я прочитал все книги Страуструпа, Мейерса, Саттера и др.. Что мне теперь изучать, чтобы, скажем, через пару лет не остаться с голой жопой и все еще программировать на плюсах? Что читать, какие фреймворки/либы учить?
>>841338>>841358
#23 #841338
>>841290
Писюны посасывать и анусы подлизывать начальству?
>>841363
#24 #841358
>>841290
Странный вопрос.
Устраивайся на люблю работу, спустя год ее меняй, потом еще раз спустя год меняй - и вуаля, ты чувак, который немножко всякого разного умеет. Дальше уже занимайся тем, чем нравится.

В случае конкретно крестов - читать надо либо про qt, либо про алгоритмы всякие, либо про пекасети.
>>841366
Аноним #25 #841362
>>841288
Мудачье блядь, опять велосипед какой-то придумали?
Вам что существующих дистрибутивов не хватает? Ну бздя, ну план9, нет сука, хотим говно жрать.
>>841612
Аноним #26 #841363
>>841338
Мне бы такую работку.
#27 #841366
>>841358
А что нужно знать, кроме голого C++, чтобы устроиться на работу?
>>841378
#28 #841378
>>841366
В надо знать хорошо С++, понимать, что есть в бусте и знать, чем nlogn отличается от n^2.
В качестве бонуса - очень полезно поковырять qt.

Но ты сам понимаешь, что "знание голого С++" это очень обширная область и так.

Я в своей жизни проходил 5 собеседований на С++ программиста, почти все спрашивали за сам язык\STL и алгоритмы. Предметной области разработки конторы не было (ну, я нихуя и не сениор с 300к в наносекунду, чтобы еще и область знать). Области разработки учили сами уже на месте. Делай проекты, используй клевые фишки 11\14 стандарта, обязательно используй эксепшены (чтобы понять, как с ними работать) - и все будет хорошо.
#29 #841470
>>841279

>В плюсах все есть маньк, все.


Долго ржал.

Когда^W Если выберешься из своего плюсоманямирка, поржёшь тоже.
#30 #841568
>>841029
std::vector<std::uniquer_ptr<Type>> vector;
vector.emplace_back(new Type());
#31 #841612
>>841362
Ты даун?
Это мобильная ос. Потомок миго и мера.
>>841724
Аноним #32 #841724
>>841612
Есть блядь GNU - мобильная ос, нет, хотят говно жрать, говорю же.
Тем более ты на с++ пишешь, там тоесть нативные приложения, или ты IDE с костылями пользуешься что в яву превращает все?
Говорю же есть нормальные платформы, которых более чем достаточно, мейнстрим это GNU/Linux оно сейчас везде, и если под это разрабатываешь то не пропадешь, а андроид, мак, салфиш - хипсторская хуета. В мобильных устройствах критично важно время работы, чего интерпритируемое говнище никак обеспечить не может, дисплей протоколов нормальных туда тоже хуй завезли, там вообще хуй что поменяешь, часто с каким ведроидом брал телефон с таким он и здохнет. Ну если там нативные апы, то еще норм, лучше андроида.
>>841734
#33 #841734
>>841724
Натив.
#34 #841866
Есть один map который использую только внутри одной из функций членов класса. В ней я его объявил и инициализировал. Но при каждом вызове функции он заново создаются. Выносить из функции и засорять глобальное пространство имён я не хочу. Что же делать?
#35 #841945
>>841866

> Что же делать?


Давай свой класс и функцию сюда.
>>841949
#36 #841949
>>841945
Я только планирую. Но нормально же условие описал.
#37 #841966
>>841866
сделать мап мембером класса
>>841976
#38 #841976
>>841966
И чтгбы любая функция его видела?
>>842004
sage #39 #841995
>>841866
static
#40 #842004
>>841866
>>841976
Ну ты эти функции можешь сделать константными и тогда они не будут модифицировать твою мапу.
#41 #842066
НЬФАГ ЗДЕСЬ
Ладно, на самом деле не совсем ньюфаг.
Хочу спросить вот что: Можно ли как-то менять значения объектов в рантайме, обращаясь к ним по имени?
Ну, то-есть, есть у меня, например, какое-то гуи приложение. На нём есть текстбокс. Я хочу ввести в чекбокс имя объекта (скажем, money_value) и во второй чекбокс значение (скажем, 199) и чтобы значение money_value стало 199. Типа, как с RTTI, но имя инстанса, а не тип.
Что-то вроде рефлекшна в джаве.
Я могу, конечно, для моего юзкейса просто парсить команды и потом что-то чему-то присваивать, но хочу узнать, есть ли какие-то механизмы для этого.
>>842074>>842085
#42 #842070
https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers

Блять, за такой уёбищный дизайн языка надо комитет, его создавший, объявить профнепригодным и распустить. Что это блять за хуйня? Почему они не могли ввести тип универсальных ссылок? Почему мне приходится ТАК извращаться?
#43 #842074
>>842066
нет.
Можешь сделать глобальную unordered_map<std::string, YobaWidget*> и к ней обращаться.
>>842077
#44 #842077
>>842074

>нет


Хуево. Это точно?
>>842074

>Можешь сделать глобальную unordered_map<std::string, YobaWidget*> и к ней обращаться.


Окей, костылей таких я могу и сам напридумывать.
>>842088
#45 #842085
>>842066
Рефлекшен в жяве он такой, неповторимый.

В плюсах это реализуемо именно через RTTI – именно для объектов, т.е. тип класса == имя класса (правда нужно деманглить кашу от typeid – а это жутко вендорлочные костыли). Следовательно, для твоей задачи можно написать боксы как в жяве Integer.

Такие костыли тебя больше устраивают?
#46 #842088
>>842077
тебе нужен по строке получать указатель на обьект. Как еще ты это собираешься делать, кроме костылей в рантайме?
99 Кб, 828x367
35 Кб, 677x343
#47 #842108
Итак, Аноны, нужна ваше помощь.

Впервые столкнулся в QT, нужно работать с MySQL.
Узнал, что в этой хуйне нужно ставить дрова, чтобы с базой работать. Откомпилировал дрова без ошибок, поместил, вроде бы, куда нужно, но при запуске уже моего приложения - ошибка, блядь. Причем при построении - все ок. Как это фиксить?

Алсо, SQLBrowser. из примеров КьюТи, выдает ту же ошибку.
Я нарукожопил, или КьюТи пидор?
97 Кб, 800x628
#48 #842109
>>842108
ебусь с этим уже часов 5, так что пойду посплю пока. Надеюсь вы что-то подскажите
>>842125
#49 #842125
>>842109
А в крестах драйвер субд инстанцировать по классу не нужно?
Мимо Ява примат
>>842513
#50 #842172
>>842108
подложи в папку с программой по пути .\plugins вроде
>>842513
#51 #842201
>>841171
>>841029
не пашет.
#52 #842369
Умею кодить немного на C(самые основы), Джве(тоже), знаю начала ООП. Какую книгу из списка выбрать, чтобы изучить ООП в плюсах?
>>842373
#53 #842373
>>842369
Thinking in C++.
>>842379>>842391
#54 #842379
>>842373
А почему ее в шапке нет? И вообще на ангельском моя скорость чтения сильно упадет.
>>842383
#55 #842383
>>842379
На русском она "Философия С++" называется. Я не знаю, почему ее нет в шапке.
>>842412>>842413
sage #56 #842391
>>842373
Звучит как диагноз.
#57 #842412
>>842383
Наверно потому, что это высер распиаренного яваиндуса, который особой ценности не несёт.
>>842414
#58 #842413
>>842383
Прочитал описание, вроде идеально для меня.
#59 #842414
>>842412
Так мне читать или нет?
>>842497
#60 #842497
>>842414
не читай, наверни страуструпа
#61 #842513
>>842108
Я вернулся.

Сходил к другу, попробовал на его лэптопе провернуть такое же - все так же, значит я даун. ЧЯДНТ?

>>842125
Не совсем, в QT его нужно еще и отдельно установить, как я понял.

>>842172
Нихуя. Даже пробовал насильно указывать директории библиотек - один хуй.

Какова вероятность того, что скачанная мной папка с дровами MySQL - фуфло, и лучше перекачать?

Аноны, помогайте. Жутко не хочу пилить клиент для работы с БД на той же Джаве, где у меня что-то да получалось, и потом настраивать передачу данных между процессами.
>>842773
#62 #842591
Как вызвать компилятор через cmd? Какой путь к этому cl.exe на 14 студии?
>>842594
#63 #842594
>>842591
Бляя, плюсы в студии отдельно устанавливаются оказывается.
#64 #842773
>>842513
Итак, все было пофикшенно.

Дело в том, что КьюТи подхватывал библиотеке, но не мог найти их у Венды. Инсталятор с офф сайта МуСкл, почему-то, нихуя не поставил мне свои дровки, он их просто в папочку сохранил. Вручную кинул ДЛЛку в папку /windows/ - все ОК.
#65 #842996
Господа, как решить проблему с неполнотой типа в этом коде?
Есть класс массива строк, и есть дружественный ему указатель на этот массив строк. Но из-за того, что указатель определяется ниже, нихуя не работает.

https://ideone.com/GyN8lE
>>843002
#66 #843002
>>842996
Сам увидел.
>>843004
#67 #843004
>>843002
А, нет, после изменения StrBlobPtr(StrBlob &a, std::size_t sz) на StrBlobPtr(StrBlob &a, std::size_t sz = 0) ничего не изменилось.

https://ideone.com/tUwlRp
#68 #843038
Нужен getch а conio.h компилятор не находит. Что делать?
>>843065
#69 #843065
>>843038
Мне нужно 1 символ считать не показывая его на экране. Как ещё это можно в крестах сделать?
>>843071
#70 #843071
>>843065
getchar
>>843088
#71 #843088
>>843071
У cin такого метода нет. И он показывает введёный символ
>>843098
#73 #843106
>>843098
Нужно ентер нажимать и поэтому если 2 раза подряд читать, то сначала прочитает букву, а потом ентер
#74 #843280
>>841250
Это что-то из вредных советов? Чем плох вектор?
>>843320
#75 #843320
>>843280
Самый лучший контейнер. Легко добавлять новый элемент, произвольный доступ быстрый, можно в сишечку передавать дату :3. Везде использую его (зависимость уже), брат пока жив.
#76 #843389
Пишу класс матриц. Хочу сделать конструктор, чтобы можно было передавать initializer_list вот так: { {1, 2, 3}, {4, 5, 6} }
Как из него выделить строки, чтобы получилась матрица типа:
1 2 3
4 5 6?
>>843403>>843415
#77 #843403
>>843389
Класс матриц неудачный вариант для новичка. Класс сложный, возможностей мало, работы тоже мало, а на каждую вакансию десяток макак. Сейчас каждый школьник пишет класс матриц, а потом не знает что делать с ним. Лучше попробуй Haskell. На нём и конкуренция пониже, и зарплаты больше, и сам язык понятней. Если никогда не занимался программированием, то начинать лучше всего с Haskell - после него другие языки учатся быстрее. Работы полно, платят отлично. По книгам. Если есть хоть немного знаний программирования, читай это: http://www.ozon.ru/context/detail/id/30425643/ Если совсем новичок, пойдет эта книга: http://www.ozon.ru/context/detail/id/28346038/ Ну и куча онлайн-учебников. Вот, например: https://anton-k.github.io/ru-haskell-book/book/home.html Хороший учебник, всё расписано подробно. Сам по нему учился. Рекомендую.
>>843405
#78 #843405
>>843403
Кстати, зачем вообще нужно функциональное программирование? У него же нет прикладных задач. И через 20 лет вряд ли появятся.
>>843410
#79 #843410
>>843405
Чтобы прикладные языки вроде плюсов и явы с отставанием в 20 лет тащили к себе по паре фишек из фп раз в 5 лет и хомячка восторженно пищали.
>>843428
#80 #843415
>>843389
struct biba {
int a; int b; int c;
}

Matrix(std::initalizer_list<biba> list);
#81 #843422
Где можно почитать стандарт c++14? в интернете одни драфты(черновики) находятся
#82 #843426

>template<typename T, std::size_t ... dimensions>


Как найти произведение чисел из списка аргументов dimensions?
>>843479>>843741
#83 #843428
>>843410
Пиздец ты тупой. Ни одной фишки из фп в жабу перетащено не было.

мимохомяк
>>843440>>843447
#84 #843432
Почему студия не компилирует этот кодес? https://ideone.com/wO7wen

>'_Size': invalid template argument for 'std::array', expected compile-time constant expression

>>843468>>843513
#85 #843440
>>843428
Лямбды же
#86 #843447
>>843428
Своим незнанием откуда в языке есть эти пару фишек ты сам себя позоришь своим безкультурием. Все равно что приехать во Францию и орать "хуй ахах ресторан жир русское слово))))".
sage #87 #843468
>>843432
constexpr doesn't mean const
>>843469>>843471
#88 #843469
>>843468
Тогда как поправить мой код, чтобы он работал?
>>843471>>843472
sage #89 #843471
>>843468
>>843469
А может и не поэтому.

Но добавь const к size()
>>843472
sage #90 #843472
>>843469
>>843471
А. Это же static. Какой ещё const.
sage #91 #843479
>>843426
рекурсивно.
#92 #843513
>>843432
В твоем ideone все же компилится, выходит, что студия не нужна.
#93 #843741
>>843426
http://ideone.com/V1n9tX

Тебе ещё следует узнать про Universal References и Perfect forwarding, чтобы была возможность умножать объекты с перегруженным оператором без копирования.
#94 #843911
https://www.appone.com/MainInfoReq.asp?R_ID=1350800&B_ID=44&fid=1&Adid=&ssbgcolor=&SearchScreenID=2285&CountryID=3&LanguageID=2
Ну что посоны, сколько лет к такому надо идти жабамакаке? помимо 2 лет геймдевелопмент опыта
Или к этому?
https://www.appone.com/MainInfoReq.asp?R_ID=1286133&B_ID=44&fid=1&Adid=&ssbgcolor=&SearchScreenID=2290&CountryID=3&LanguageID=2
>>843974
sage #95 #843974
>>843911
Твоё говно даже не открывается. Так или иначе, репорт.
#96 #843997
Так, ананасы, решил я тут поиграться с системами сборки анусом, и нашел WAF. Пуфон, все дела, очень удобно, после богомерзкого cmake, но вот проблема в том, как сгенерировать проект для Eclipse или какой еще поебистики того рода, чтобы нормально работать, а не в блокнотиках собирать всякое говно. Может сталкивался кто с таким?
#97 #844180
так двоч начал вкатываться в с++ и тут такой трабл в методичке никак не могу разобраться как взаимодействуют функции а конкретнее как реализовать данный пример y = (x + 1)(x + 2)(x + 3)(x + 4) ... (x + n) рекурсивной функцией, можно без кода но желательно на пальцах пояснить за каждую строку чтоб тупице вроде меня было понятно
#99 #844200
>>844193
спасибо ,пойду разбираться
>>844204
Шапку читай скотина блядь #100 #844202
>>844180

> Лабы идут на хуй

>>844214
#101 #844204
>>844200
Только там небольшой косяк я допустил.
Должен быть return 1, а не return 0
#102 #844214
>>844202
это не лаба а для себя
#103 #844485
Кто нибудь уже осилил мок произвольного абстрактного класса в компайлтайме?
#104 #844678
Я не хочу каждый раз когда мне надо узнать размер структуры вызывать для этого функцию. Я хочу переменную где это значение будет хранится. Но тогда нужно обновлять значение это переменной в каждой функции которая размер структуры меняет. Можно ли сделать такую переименую которая высчитывается при обращении к ней? А можно так чтобы она была доступна для чтения извне класса, но не доступна для изменения.
>>844692
sage #105 #844692
>>844678

> Я не хочу каждый раз когда мне надо узнать размер структуры вызывать для этого функцию.


Какую ещё функцию?
>>844722
#106 #844722
>>844692
Которая высчитывает его размер. В структуре массив указателей
>>844723
#107 #844723
>>844722
Бля, давай код.
>>844740
#108 #844740
>>844723
завтра тогда. он не на моём компе
anon #109 #844909
посоны
ток что создал тред по Google Moc
Кто разбирается может помочь чуть?
https://2ch.hk/pr/res/844903.html (М)
#110 #844971
Няши, покидайте книжек/видео по Qt и в частности QML. Никогда с ним не работал, и сейчас не совсем понятно, куда даже копать.
Есть один webView, и он умеет открывать ссылки. Как открывать ссылку по нажатию кнопки я понял, но мне надо, чтобы ссылка открывалась автоматически из когда. В первом случае в QML не надо ничего подключать, но при попытке вызвать id webView из другого класса компилятор ругается на отсутствие. Есть какие-нибудь мысли?
>>844976
83 Кб, 1178x548
#111 #844976
>>844971
Отклеилось
#112 #844998
Господа плюсисты, подскажите, пожалуйста, как можно использовать строготипизированный енум в конструкции свитч-кейс? Конпелятор ругается на неявное приведение типов.

class enum foo : uint8_t { bla1, bla2, ... blablabal ...};

switch (x) {

case foo::bla1:
case foo::bla2:
...
blablalba
...
}
>>845132
112 Кб, 734x1000
#113 #845031
Проблема - если я ввожу не "text" , а другое слово, либо число, не выполняется else. Подскажите, пожалуйста, в чём причина? Он не может из inc_used(increase used) попасть в get_object(any,other) ? Неправильная нагрузка? Или что. Прошу помочь( includeы все имеются).

template <typename Any>
void get_object(Any object)
{
std::cout << object << std::endl;
}
template <typename Any, typename other>
void get_object(Any object,other number)
{
for (int i = 0;i < number-1;i++) { std::cout << object << std::endl; }
}
void inc_used(int used, std::string text)
{
used++;
get_object(text,used);
}
int main()
{
int
used = new int;
used = 1;
std::string
x = new std::string;
std::cout << "What do you want to run?" << std::endl;
getline(std::cin, x);
if (
x == "text")
{
get_object(x);
}
else {
inc_used(used,
x);
}
delete x;
delete used;
system("pause");
return 0;
}
112 Кб, 734x1000
#113 #845031
Проблема - если я ввожу не "text" , а другое слово, либо число, не выполняется else. Подскажите, пожалуйста, в чём причина? Он не может из inc_used(increase used) попасть в get_object(any,other) ? Неправильная нагрузка? Или что. Прошу помочь( includeы все имеются).

template <typename Any>
void get_object(Any object)
{
std::cout << object << std::endl;
}
template <typename Any, typename other>
void get_object(Any object,other number)
{
for (int i = 0;i < number-1;i++) { std::cout << object << std::endl; }
}
void inc_used(int used, std::string text)
{
used++;
get_object(text,used);
}
int main()
{
int
used = new int;
used = 1;
std::string
x = new std::string;
std::cout << "What do you want to run?" << std::endl;
getline(std::cin, x);
if (
x == "text")
{
get_object(x);
}
else {
inc_used(used,
x);
}
delete x;
delete used;
system("pause");
return 0;
}
>>845060
#114 #845035
<script src="http://ideone.com/e.js/c4fDPV" type="text/javascript" ></script>
>>845060
#115 #845043
Сверху не смотрите(там где моя простыня кода) - там у всех разымёнываний *(звёздочки) потеряны, переходите по моей кривой ссылке, там код правильный
>>845060
#116 #845060
>>845031
>>845035
>>845043
Разобрался. Там used++ для увеличения значения на 1 нельзя было использовать, надо used= *used+1
>>845130
#117 #845130
>>845060
Можно определить приоритет скобками: (*used)++
#118 #845132
>>844998
x не енум что ли?
>>845324
#119 #845275
Сап пр, есть один код, и сука он падает https://ideone.com/j5vxGl. Это примерный набросок участка кода, который вызывает проблемы. Объясните где я обосрался? Проблема, что в момент выделения памяти в функции программа падает с сегментейшен фолт, насколько я понимаю какого-то хуя в момент выделения памяти я перезаписываю стек, никогда такого небыло и вот опять.(Причем на идеоне все работает) Как фиксить то?
>>845279
#121 #845280
>>845279
Спасибо, с делитом действительно нехорошо получилось, но падения вызывал не он. Нашел я ошибку, я выделял под первый массив(тот который в мейне) память через new(), на идеоне я выделял нормально, а вот у себя не заметил.
#122 #845324
>>845132
Подпарвил.

class enum foo : uint8_t { bla1, bla2, ... blablabal ...};

foo x = something_return_foo();

switch (x) {

case foo::bla1:
case foo::bla2:
...
blablalba
...
}
>>845381
#123 #845366
>>844180
дай ссылку на методичку, если есть
#124 #845381
>>845324
Хуй знает, все должно работать.
https://ideone.com/Mr96Vc
#125 #846101
Здравствуйте, господа крестоводы. Скажите, кто-нибудь сталкивался с таким зверем, как OpenFOAM?
#126 #846103
Здрасте, прикладной дектопный говнокодинг мелких приложух под себя - это к вам?
#127 #846266
Какой самый простой и элегантный способ "вырезать" кусок из файла? И какой правильный?
Допустим, есть у меня файл с текстом:

>aaa bbb ccc ddd


А я хочу получить

>aaa ccc ddd


То есть вырезать символы 4-7 (иил 5-8)

Есть идея открыть два fstream'а (in и out), затем, поставив курсоры куда надо (out.seekg(3); in.seekg(7)), просто писать то, что читаю, ворде
while (in.read(block, block_size)){
out.write(block, block_size);
}
Предположим, что размеры идеально совпадают и последний блок будет прочитан как раз перед eof и т.д.
И затем в конце truncate'ить файл, чтобы размер уменьшился до нужного.

Это нормально или умные люди делают как-то иначе?
>>846274>>846327
sage #128 #846274
>>846266

>умные люди делают как-то иначе?


Ага. sed-ом, например.
#129 #846327
>>846266
"вырезать" заменять на "отфильтровать" - пишут что нужно оставить во временный файл, потом удаляют старый и временный на его место
так быстрее всего
по сути происходит посимвольный ввод-вывод 2мя системными функциями, в потрохах которой рантайм и система все нужные буферицаии-оптимизации делает незаметным образом для тебя
>>846458>>846507
#130 #846441
Ананас, в последнее время unique_ptr не даёт покоя.
Вот, например, у меня есть массив (внутри unique) и я хочу его передать функцию для какой-то обработки, но терять им владение не хочу и поэтому передаю по константной ссылке.
Та же ситуация и с возвратом из функции.
Стоит ли так делать?
>>846486
sage #131 #846458
>>846327

>рантайм и система все нужные буферицаии-оптимизации делает незаметным образом для тебя


Ой, ладно тебе, "все оптимизации делает". Что, и sendfile вызывает, когда возможно?
#132 #846486
>>846441
В такой ситуации ты спокойно можешь использовать сырой невладеющий указатель.
220 Кб, 334x639
HUESOS #133 #846504
Посмотрел толк от Страуса на CppCon 2016, по поводу нового стандарта, ебать я подлетаю на стуле. Хочется плакать и писать на расте...
>>846540>>847907
#134 #846507
>>846327

>"вырезать" заменять на "отфильтровать" - пишут что нужно оставить во временный файл, потом удаляют старый и временный на его место


Ну, то есть, никакой магии "указания на разрыв" нет (типа, вот файл отсюда и до сюда, а следующий кусок там, как получается при фрагментации на диске), и если мне нужно из гигабайтного файла убрать пару килобайт, то нужно пересмотреть архитектуру хранения данных прочитать с диска гигабайт и записать на диск почти гигабайт, да?
>>846516>>846542
#135 #846516
>>846507
Если размер удаляемых данных кратен кластеру, то, в теории, можно пошаманить на уровне файловой системы. Но абстракция "файл" не для того была придумана.
#136 #846540
>>846504
все нововведения в последних стандартах крестов - это добавление синтаксического сахарка и расширение библиотек, входящих в стандартную поставку
те семантика языка не меняется, а значит шарящего чувака все эти нововведения не пугают и не волнуют
>>846950
#137 #846542
>>846507
а как еще то? то что я тебе предложил - наглядно и просто, можно сделать на стандартных getc и putc, потоковым (с внутренней буферизацией) вводом-выводом
57 Кб, 560x395
#138 #846815
Аноны, поделитесь книгами по сетевому программированию на плюсах
#139 #846849
Сегодня впервые понял профиты от наследования. Это наследование GUI формочек. До этого всякий раз наследование выглядело таким лютым говнищем, что хотелось всех убить. С формочками согласен -- норм. Но в остальном OOP это ебучий рак.
#140 #846914
Не могу установить на винду 15-ю студию, потому что система засрана. Поэтому установил Code::Blocks и прописал в настройках компилятор clang++. Исходники компилируются, но возникает ошибка линковки. Какой линкер можно использовать?
>>847353>>847363
#141 #846950
>>846540
Вот именно, что там ровным счетом нихуя.
54 Кб, 600x400
#142 #846954
Подскажите пожалуйста!
У меня windows 7 а я поставил себе visual Studio community 2015,проблема в том, что при выборе типа проекта выдает "could not find a suitable sdk to target" что делать? окна 10-ые ставить не охото..
#143 #847353
>>846914

>Не могу установить на винду 15-ю студию


Что за ошибки выдаёт? Накати на винду последние обновления
>>847361
sage #144 #847355
>>846954
В /s/
#146 #847361
>>847353

>Что за ошибки выдаёт? Накати на винду последние обновления


Да в пизду ее, у меня винда совсем убитая, надо переустанавливать. Пока что меня устроит и Code::Blocks.
sage #147 #847363
>>846914
Ставь линакс
#148 #847368
>>847363
И так стоит на ноуте, но в нем отвалилась земля. Пока не сделаю заземление, буду на винде. Посоветуйте, как исправить ошибку error: linker command failed with exit code 1104 (use -v to see invocation)|
#149 #847399
>>840964 (OP)
Хочу высрать окошко с кнопкой, доставьте готовый хэлловорлд
10 Кб, 449x631
#150 #847569
Не устанавливается IDE, антуаны. Скоро останусь без интернетов, хотел занять себя кодингом, но у меня пиратская винда, которая никак не обновляется и похоже из-за этого мне не поставить эту хуйню. Вот так и висит. Скачал отдельно эту обнову - не хочет ставиться.
#151 #847580
>>847569
Не задумывался о том, что проще скачать бесплатно без смс wxDev-C++ ?

С таким подходом к решению задач ты далеко пойдешь не только в С++, но и в программировании в целом
>>847581
#152 #847581
>>847580
опять какую-то красноглазую ненужную залупу форсят

>>847569
Не слушай его, гугли как поставить обнову, и ставь студию. Шиндовс переставь в конце концов
>>847582
#153 #847582
>>847581

>морочиться с обновой


>переустанавливать Шиндовс


>потом искать для студии кряки с троянами



И это все ради IDE, имеющей идентичный функционал
>>847584
#154 #847584
>>847582
Нет, с студией ни одна иде до сих пор и близко не стоит.

Кряки не нужны – полноценная студия давным давно бесплатна.
>>847586
#155 #847586
>>847584
А что после 30 дней делать с ней?
>>847587
#156 #847587
>>847586
Зарегестрироваться на сайте майкрософта, авторизоваться в студии и всё. Внезапно, да?
>>847643
29 Кб, 1920x260
#157 #847596
Пацаны, что делать с этой шляпой? Вин10, CodeLite, g++ в качестве компилятора
#158 #847597
>>847596
Как хотя бы описать проблему гуглу?
31 Кб, 1000x647
#159 #847602
>>847596
А это блядь что за хуйня в настройках? Почему в одном случае слеши в пути левые, а во втором -- правые? И как правильно всё это заполнять на винде?
sage #160 #847605
sage #161 #847606
#162 #847640
>>840964 (OP)
Поставил C::B, mingw, wx. Сделал хэлловорлд для работы с wx, при билде получил ошибку:

>.\wx_pch.h|14|fatal error: wx/wxprec.h: No such file or directory|


Где и как я обосрался? Помогите ньюфагу.
>>847642>>847688
#163 #847642
>>847640
Просто юзай Qt Creator
>>847644
#164 #847643
>>847587
Возможно, ты действительно лучше меня осведомлен касаемо лицензионной политики MS, но

>Зарегестрироваться



я бы тебе все же посоветовал подтянуть русский язык перед будущим ЕГЭ
#165 #847644
>>847642
У меня на него, не поверишь, памяти не хватает. В ВУЗе сказали, что для C будем C::B использовать, поэтому на его основе и начал делать, так как предустановлен уже. На диске меньше 1гб осталось, даже под иные нужды не хватает, за неделю, конечно, подрасчищу, но мне бы уже сейчас начать всё это делать.
>>847648
#166 #847648
>>847644

> для C


Может тогда юзать tcc и просто текстовый редактор?
>>847653
#167 #847653
>>847648
Тут компилятор встроенный и много всякого важного. Но мне сейчас плюсы нужны и грофен от wx.
>>847691
sage #168 #847688
sage #169 #847691
>>847653

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


Ничего себе спермачи терминологию выдумали. "Встроенный компилятор".
>>847718
#170 #847718
>>847691
Лол. Встроенный в ту версию ide, что я скачал.
#171 #847764
Аноны, подскажите, как в Visual Studio подключать библиотеки(тот же boost), не используя абсолютный путь, т.е. чтобы не было проблем с компиляцией на другом компе, например
>>860090
#172 #847785
анон, допустим у меня есть string "name values : 1, 44, 53, 23"
Как мне прочитать intы из нее в соответствующие переменные типа int?
>>847793
#173 #847793
>>847785
stringstream
#174 #847810
Аноны, в вузе да, я студент заставляют делать CLR приложение окошко на плюсах. Так кто-нибудь в реальных проектах делает?
>>847812
#175 #847812
>>847810

> Так кто-нибудь в реальных проектах делает?


Конченный дауны, например.
>>847813
#176 #847813
>>847812
Значит я о нём правильного мнения. Добра тебе
#177 #847819
Плюсаны, а у вас есть конфа или другое место обитания, на этой гнилой доске что-то не оч. хочется сидеть.
>>847822
#178 #847822
>>847819
Жри что дают.
#179 #847824
Ананасы, поделитесь книгами по OpenMP. Мх ублюдошная спецификация меня просто раздражает...
#180 #847906
>>847363
Согласен с этим пидором, хоть и презираю его.

Думаешь, я тебя забыл, моя родная внимание-блядь?
#181 #847907
>>846504
Ебал слушать эту хуйню 1:40. Че там вкратце?
#182 #847917
>>840964 (OP)
помогите найти ошибку
#include <locale>
#include <cmath>
#include <iostream>

using namespace std;
int mai()
{
setlocale(LC_ALL, "Russian" );
int x,y,x1,x2,x3,y1,y2,y3;
int s,s1,s2,s3;
cout <<" Введите координаты треугольника:" ;

cout <<"x1=" ;
cin >> x1;
cout <<"y1=" ; cin >> y1;
cout <<"x2=" ; cin >> x2;
cout <<"y2="; cin >> y2;
cout <<"x3="; cin >>x3;
cout <<"y3="; cin >> y3;
cout << "Введите координату точки";
cout <<"x="; cin >> x;
cout <<"y="; cin >> y;

if (x1==x2==x3 || y1==y2==y3)
{
cout<<"Треугольник задан не верно";
}
{
s = 1/2 abs((x2 - x1) (y3 - y1) - (x3 - x1) (y2 - y1));
s1 = 1/2
abs((x2 - x1) (y - y1) - (x - x1) (y2 - y1));
s2 = 1/2 abs((x - x1) (y3 - y1) - (x3 - x1) (y - y1));
s3 = 1/2
abs((x2 - x) (y3 - y) - (x3 - x) (y2 - y));

if(s == s1 + s2 + s3){

cout<<"Точка в треугольнике";}
else
{

cout << "Точка не принадлежит треугольнику" ;}
}
return 0 ;
}
#182 #847917
>>840964 (OP)
помогите найти ошибку
#include <locale>
#include <cmath>
#include <iostream>

using namespace std;
int mai()
{
setlocale(LC_ALL, "Russian" );
int x,y,x1,x2,x3,y1,y2,y3;
int s,s1,s2,s3;
cout <<" Введите координаты треугольника:" ;

cout <<"x1=" ;
cin >> x1;
cout <<"y1=" ; cin >> y1;
cout <<"x2=" ; cin >> x2;
cout <<"y2="; cin >> y2;
cout <<"x3="; cin >>x3;
cout <<"y3="; cin >> y3;
cout << "Введите координату точки";
cout <<"x="; cin >> x;
cout <<"y="; cin >> y;

if (x1==x2==x3 || y1==y2==y3)
{
cout<<"Треугольник задан не верно";
}
{
s = 1/2 abs((x2 - x1) (y3 - y1) - (x3 - x1) (y2 - y1));
s1 = 1/2
abs((x2 - x1) (y - y1) - (x - x1) (y2 - y1));
s2 = 1/2 abs((x - x1) (y3 - y1) - (x3 - x1) (y - y1));
s3 = 1/2
abs((x2 - x) (y3 - y) - (x3 - x) (y2 - y));

if(s == s1 + s2 + s3){

cout<<"Точка в треугольнике";}
else
{

cout << "Точка не принадлежит треугольнику" ;}
}
return 0 ;
}
239 Кб, 1959x1959
#183 #847921
>>847917
А вот и лабодауны оттаяли
#184 #848022
Братики мои родненькие. Есть что почитать по com'у и mfc'у?
>>848031>>848322
#185 #848031
>>848022
По COM:
Троелсен / Troelsen - Модель COM и применение ATL 3.0 .
#186 #848046
>>847917

> помогите найти ошибку


Ты пошёл учиться на программиста.
Вот твоя ошибка.
>>848097
#187 #848097
>>848046
Парни, в чем причина такой хуйни:
QtCreator 3.6.1, создаю проект, накидываю файлы, делаю билд, cpp и h видит нормально, а qml он не копирует в директорию билда. Run qmake тыкал, не помогает.
#188 #848100
>>847917
Ебаааааать
23 Кб, 510x627
#189 #848127
Первокурсник итт. Посоветуйте, пожалуйста, как сделать визуальную интерпритацию сортировки массива? Нужно, чтобы после каждого нажатия на кнопку Ентер показывалось в консоли, как элемент массива меняется с другим. Хоть убей, не знаю как это сделать. Дайте советов. Саму сортировку я написал, пикр.
#190 #848135
Ребята, я совсем тупой.
Есть код:

#include <iostream>
#include <string>
#include <vector>
#include <cctype>
using std::cin; using std::cout; using std::endl;
using std::string;
using std::vector;

int main() {
string (word);
vector<string> strings;
while (cin>>word)
strings.push_back(word);
for (auto i: strings)
if (islower(strings)==true)
strings=toupper(strings);
for (auto i=0; i!=strings.size(); i++)
cout<<strings;
cout<<strings.size();
}

При выполнении выдаёт ошибку "no matching function for call to 'islower" и дальше страшные буквы. Поможете разобраться?
#191 #848141
Вот тенденции крестотреда:
- Полгода атакуют лабодауны
- Полгода скорость постинга 2 поста в неделю
- Два раза в год разгорается какой-то технически сложный срач
- Раз в два месяца происходит вялое набрасывание за любимую IDEшечку.

/thread

P.S. >>848135 - нахуй иди, педрила безграмотная
>>848142>>848197
#192 #848142
>>848141

> безграмотная


Извини, не знал, что табы не обрабатываются.
#193 #848150
>>848135
код просто кишит обшибками. Иди читай методичку.
sage #194 #848197
>>848141
Дело даже не в крестотреде. Это же два.ч, форум для (недавних) школьников. Что ты хочешь от него?
#195 #848268
pkg-config не говно, мс цпп говно, шланг идеален.
#196 #848269
>>848135
$ man man
#197 #848298
>>840964 (OP)
Анон, доставь проект хэлловорлда с гуи, а то у меня его собрать не получается, так хоть ясно будет по какой причине.
#198 #848313
При билде хэлловорлда на wxWidgets происходят ошибки.
Анон, что не так?

<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_richtext
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_xrc
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_aui
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_dbgrid
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxbase28ud_odbc
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_media
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxbase28ud_net
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_gl
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_qa
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxbase28ud_xml
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_adv
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_html
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw28ud_core
<ДЕАНОНЮЩИЙ ПУТЬ ДОК IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: cannot find -lwxbase28ud
collect2.exe: error: ld returned 1 exit status
>>848314>>848315
35 Кб, 533x518
#199 #848314
>>848353
#200 #848315
>>848313

> Анон, что не так?


> cannot find


Сам-то как думаешь?
>>848353
#201 #848322
>>848022
дейл роджерсон "основы com"
румянцев "mfc изнутри"
#202 #848353
>>848314
Чтобы попробовать гуй, очевидно же.
>>848315
Я незнаю, когда я прохожу по <ДЕАНОНЮЩИЙ ПУТЬ ДО IDE>/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/, то я вижу ld.exe. Оно там есть. Как я понимаю, -lwxmsw28ud_richtext - флаг с которым оно пытается запустить этот ld.exe. Поэтому я не знаю почему оно так и прошу твоей помощи, анончик. Я не знаю как проверить работоспособность флага и же узнать почему он не работает.
>>848359
#203 #848359
>>848353

> Я не знаю как проверить работоспособность флага и же узнать почему он не работает.


Ну блять, потому, что это какая-то либа которой не хватает.
>>848362
#204 #848362
>>848359
Но ведь я установил wxWidgets и прописал путь до неё в визард? Или я установил как-то не так?
>>848369>>848383
#205 #848369
>>848362
Понятия не имею что там не так.
Если уж нужны гуи, то я бы пару дней подрочил с# и сделал на формах.
Ну или если плюсы, то Qt.
#206 #848371
А мог бы код писать, а не ебаться с иде и протухшим фреймворком.
#207 #848383
>>848362
Аргументы линкера гуся в студию, мне кажется, у тебя -L не прописан
>>848384
#208 #848384
>>848383
Куда нажать, чтоб узнать аргументы линкера?
>>848565
#209 #848503
Хелп, не могу вдуплить как реализовывать классы. Чтоб с перегрузкой стандартных операторов, в три файла и пространством имен, что это за магия?Можете пример какой-нибудь накидать?
>>848553
#211 #848565
>>848384
Покажи, что у тебя прописано в Project build options -> Debug / Release -> Search directories. Там указываются пути для ббилиотек, похоже.
#212 #848666
Нормально ли что маленький pomodoro таймер на C++/Qt5 ест 50 метров памяти?
Там ничего такого нет: сохранение/применение настроек (QSettings, пока что существует всегда, а не только когда нужен), звуковой сигнал (QMediaPlayer, объект создаётся только при необходимости и сразу же после использования удаляется), окно настроек (также создаётся лишь при необходимости) и иконка в трее с меню из 2 пунктов.
Ну и естественно, объект-таймер, наследник QObject.
+стоят обработчики событий на нажатия в главном окне чтобы его можно было перемещать (рамка окна отключена)

Valgrind молчит.
Linux (openSUSE Tumbleweed), x64

Как серьёзно уменьшить потребление памяти не урезая прогу?
#213 #848671
>>848666
Пересобрать Qt с только нужными тебе модулями.
Ну или подождать пару месяцев Qt lite.
528 Кб, 3000x2217
#214 #848674
Не бейте только, в ньюфаго-треде мне не ответили.
>>848203
#215 #848686
Нид хелп, имеется класс полиномов(многочлены от одной переменной)
http://pastebin.com/trnA03AP это тестовый файл.
http://pastebin.com/9ndn2jQ4 polynom h файл
http://pastebin.com/mbseYCdJ polynom cpp файл
Все компилируется, но во фразе
polynom m3;
m3=polynom(m1+m2);
Вызывается конструктор, а не оператор копирования(который возвращает ссылку на объект типа полином).
#216 #848687
>>846954
в общем как решил проблему, при повторной установке отметил язык С++ и все стало норм.
#217 #848729
>>848686

> http://pastebin.com/trnA03AP это тестовый файл.


polynom m1(2,x);
...
m1.~polynom();

> http://pastebin.com/mbseYCdJ polynom cpp файл


polynom::polynom()
{
std::cout<<"emtyconst\n";
double x[1]={0};

polynom(0,x);

}
>>848730>>848732
23 Кб, 400x309
#218 #848730
>>848686
>>848729
Отклеился пик.
#219 #848732
>>848729
Ничего не понял. При чем тут вообще деструктор?
>>848734
#220 #848734
>>848732
У меня тот же вопрос.
>>848736
#221 #848736
>>848734
Создали объект, удалили его. Что не нравится в конструкторе пустом? При том, что вызывается не он, а обычный конструктор, вместо копирования. Ты помочь можешь?
>>848738>>848739
30 Кб, 524x526
#222 #848738
>>848736

>Создали объект, удалили его.

>>848740
#223 #848739
>>848736

> Ты помочь можешь?


Да. Вам сюда: https://2ch.hk/pr/res/839462.html (М)
#224 #848740
>>848738
То есть деструктор не нужно самому вызывать. А почему срабатывает не тот конструктор?
>>848744
#225 #848741
Чо он не создаëтся на g++ и бионике? Ведродаун, ну вы поняли

vector < vector < int > > numbers (10, vector < int >);
>>848746
#226 #848742
>>848666
Вангую статическую линковку, дружище.
>>848747
#227 #848744
>>848740

>То есть деструктор не нужно самому вызывать.


Нет.

> А почему срабатывает не тот конструктор?


Приведи уже лог, чтобы я мог увереннее тебя отхуесосить
>>848749
#228 #848746
>>848741
vector < vector < int > > vec (10,vector < int > (10) );
Вот так, конечно наверное, но тоже не работает
#229 #848747
>>848742
Её быть не должно.
Toolchain дефолтный, релизный бинарник чуть больше 100КБ весит
>>848752
#230 #848748
>>848666

>Нормально ли что маленький pomodoro таймер на C++/Qt5 ест 50 метров памяти?


Да. https://www.opennet.ru/base/sys/pmap_memory.txt.html
#231 #848749
>>848744
Какой лог, я в это не умею, каутами(остатки которых ты можешь наблюдать) обнаружил, что в строке
m3=polynom(m1+m2);
вызывается polynom(int n, double *x)
Хотя m1+m2 возвращает объект и по идее должен вызываться конструктор копирования polynom(&O)
Где O – объект класса полином.
Насчет деструктора да, если вырезать, то ничего не поменяется.
>>848754>>848756
#232 #848752
>>848747
тогда память течет, как советский смеситель.
А если нет - юзай allocation profiler
#233 #848754
>>848749
У тебя там (если не считать возврата по значению) вообще нет мест, где может вызваться конструктор копий.
>>848756
#234 #848756
>>848749
>>848754
Хотя не, пизжу. Есть, эти вот и polynom(m1+m2) polynom(m1*m2)

Сдаётся мне, компилятор соптимизировал это и сразу подал результат сложения/умножения на вход оператору присваивания.
>>848758
#235 #848757
>>848686
А вообще

Error in `./a.out': double free or corruption (fasttop): 0x0000000000749050
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x77725)[0x7f2f12242725]
/lib/x86_64-linux-gnu/libc.so.6(+0x7ff4a)[0x7f2f1224af4a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f2f1224eabc]
./a.out[0x400e2a]
./a.out[0x400bfb]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f2f121eb830]
./a.out[0x4008e9]
#236 #848758
>>848756
Я сомневаюсь, что он так делает, это слишком непредсказуемо и умно для с++.
>>848760
#237 #848760
>>848758

>непредсказуемо


NRVO — это более чем предсказуемо.

Class a;
Class b;

a = Class(b); <-- выкинуть тут Class и превратить это в a = b — более чем предсказуемо.
>>848765
#238 #848765
>>848760
А какой тогда вообще смысл в конструкторе копирования, если его нельзя применить? Только перегружать равенство, но это несколько иное.
>>848766
#239 #848766
>>848765

>А какой тогда вообще смысл в конструкторе копирования


Копировать объект.

> если его нельзя применить?


В смысле?
>>848779
#240 #848779
>>848766
Вот у меня есть конструктор копирования, приведи пример, как я должен его применять.
Синтаксис конкретно этого куска взят, кстати, с сайта мелкомягких.
>>848782
#241 #848782
>>848779

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


Чего ты хочешь? Чтобы он гарантированно вызвался?

> Синтаксис конкретно этого куска взят, кстати, с сайта мелкомягких.


К чему ты это написал?
>>848783
#242 #848783
>>848782
Да, я хочу чтобы он вызвался. Иначе зачем мне функция, которую не вызвать. Объяснять к чему это я не буду.
>>848784
#243 #848784
>>848783
polynom(m1+m2);
>>848785
#244 #848785
>>848784
И куда он, извините, копирует?
>>848786
#245 #848786
>>848785
Да, не то.
polynom m4(m3);
>>848791
#246 #848791
>>848786
Уникальнейший синтаксис, ранее не встречаемый мною.
m4.polynom(m3);
Мне кажется что вот так.
>>848792
#247 #848792
>>848791
Конструкторы нельзя вызывать, у них нет имён.
#248 #848793
>>848792
Ок, переправлю.
#249 #848841
>>848792
Но это же не объясняет почему вызывается конструктор.
#250 #848872
>>848792
Конструкторы можно вызывать (гугли placement new)
>>848912
#251 #848887
Сап, аноны. Пришла в голову идея учить на C++ геймдев.
Имеется не до конца прочитанная книга Шилдта "Базовый курс" 2014-го. Почему не читаю до конца? Потому-что заебался и просто читать без практики нудно. Решил просто начать делать что-нибудь и, если будет непонятно, курить мануалы, книгу и гугл.
Посему вопрос: с чего вообще начать в этом?
Алсо, скажу, я не долбоеб и понимаю, что сразу начать с "мнагамилеоныхтридэигртипагэтэа" я не смогу, поэтому надеюсь на ссылки мини-игр, типа тетриса, 2д и прочего.
>>848921
#252 #848912
>>848872
Я имею в виду по имени.

ТАК-ТО ДА, КОГДА ТЫ СОЗДАЁШЬ ОБЪЕКТ, ВЫЗЫВАЕТСЯ КОНСТРУКТОР. ОХУЕТЬ ТЫ МЕНЯ ПРОСВЕТИЛ.
#253 #848921
>>848887
Читай Доусона(Dawson) для основ, по делу - гугли и учи SDL или SFML, можешь для первого загуглить Remaking Cave Story in C++, хоть там много говнокода и неосвобожденной памяти, но для новичка сойдет
#254 #848933
Напомните мне название плагина для vim, в котором охуительный комплит от шланга есть. Уже кто-то советовал, но никак не могу найти в архиве.
#255 #848937
>>848933
Visual Studio
#256 #848940
>>848933
Youcompletememe.
sage #257 #848943
>>848933
Как это ни странно, он называется clang_complete
#258 #849335
Сап ананасы. Я сейчас ковыряюсь с проектом, который весь из себя шаблон через шаблон а-ля метода из книжки Александреску. В итоге, дело идет неебически медленно.

Например, разбираюсь с шаблоном, в который мне нужно добавить код. Вижу функцию. Начинаю искать код функции. В итоге, спустя несколько прыжков по typedef'ам и куче классов (т.е. функция лежит в шаблонном классе, который через штук 5 других шаблонных классов и typedef'ов все-таки оказывается в том классе, с которым я, собственно, разбираюсь), я уже забываю блин, что, собственно, искал и зачем.

Для новичка это все выглядит пиздецки ебануто.

Подскажите, может есть какая метода, позволяющая как-то в подобном коде разобраться?
>>849397>>849399
#259 #849396
Анон, а есть что почитать про заполнение формы отчёта по шаблону в ворд на вижуал си++?
>>849542
#260 #849397
>>849335
Я, обычно, беру чистый файлик в блокноте, и пишу туда стек вызовов, кусочки кода и тд.

Чтобы потом четко и ясно на 1 экране была полная картина что и как работает, и где что править
>>850165>>850616
#261 #849399
>>849335
Нету никаких методик. Это называется write-only код. Не факт что его автор хорошо помнит что тогда выражал этим.

Лучше возьми другие исходники, тем более что ты нюфаг — не тарть время на бесполезную хуйню.
>>849456
#262 #849432
Пишет чмо в крестах, помогите.

В конструкторе класса Game
vector<Player*> players;
for (int i=0; i<8; i++) player.push_back(new Player());

В теле одного из методов класса Game
for (int i=0; i<8; i++) player.someMethod(some_arg);

Компилируется, но на третью строку при запуске ругается Debug assertion failed. C++ vector subscript out of range. Что я делаю не так?
>>849445
#263 #849445
>>849432

>Компилируется, но на третью строку при запуске ругается Debug assertion failed. C++ vector subscript out of range. Что я делаю не так?


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

А вообще — для уёбищ вроде тебя, которые не в состоянии перебрать вектор без эксепшена, сделали range based for.
>>849453
#264 #849453
>>849445
Опечатался.
for (int i=0; i<8; i++) players.someMethod(some_arg);

Я проверил players.size(), он оказался равен нулю. Пробовал и вот так наполнять:

vector<Player> players(8, Player())

Все равно он пустой. Кстати players это член класса Game.
>>849454>>849457
#265 #849454
>>849453
Весь код выложи куда-нибудь, заебал.
#266 #849456
>>849399
Хех, если бы я мог взять другие исходники. Это на работе, а я типа юный подаван.

Аффтар кода, к сожалению, в земле уже гниет. Мне бы и самому хотелось у него спросить, нахуй так писать.

Еще этот чудесный код собирается только в 2008-й студии. Соотв., ни std::thread тебе, ни nullptr и т.д.
#267 #849457
>>849453
Какого хуя ты обращаешься к указателю, как к объекту?! Ежели эта хуйня каким-то магическим образом собралась у тебя, очевидно, что ты пытаешься обратиться вне вектора (очевидно, sizeof(Player) > sizeof(size_t))
>>849461
#268 #849461
>>849457

>> проебал твой фикс


быстрофикс

Посмотри, в каких местах еще используется players.
>>849526
#269 #849526
>>849461
Все оказалось до неприличия просто. У меня уже было определение players в заголовочном файле, и я зачем-то переопределил его в local scope метода.
#270 #849542
>>849396
Решил свой вопрос на шарпе, лол. Оказывается после плюсов эта фигня оказывается легче
#271 #849624
Очередной идиотский вопрос от нафани. Чем чистый си отличается от с++?
>>849647>>849691
#272 #849626
Нужно сделать api к базе данных(mysql).
Посоветуйте что можно использовать для сервера, какие есть годные фреймворки.
В проритете - готовые решения.
Нагуглил связку nginx + fastcgi daemon, но хотелось ещё вариантов.
>>849873
#273 #849647
>>849624
ключевыми словами class и template
#274 #849691
>>849624
С++ же просто надстройка над си. Даже крестовые классы это просто запутанная функция на си
>>849697>>850354
#275 #849697
>>849691
С же просто надстройка над ассемблером. Даже сишные функции это просто запутанные CALL/RET.
>>849699
#276 #849699
>>849697
Ассемблер же надстройка над машинными кодами. Даже CALL/RET - какие-то там циферки опкодов. А те в свою очередь надстройка над логическими элементами, которые в свою чоередь надстройка над току бегающему по камушку. Он в свою очередь надстройка над атомами и молекулярной сеткой. И эта рекурсия конца не имеет.
>>849713
#277 #849713
>>849699
где-то в районе кварков кончается жи все
>>849719
#278 #849719
>>849713
Этого наука точно ещё не установила.
>>849752
#279 #849752
>>849719
Вот и доказали что количество отличий си от с++ стремится к бесконечности пополам. Почему пополам,хз, в математике не силен может надо квадратный корень
#280 #849859
Сап крестач! В общем дело такое, я понемножку вкатываюсь в мир сисиплюса, ранее не программировал, занимаюсь с ментором! Дали задание на дом: сделать с помощью массива [3][3] - матрицу, при чем чтобы элементы матрицы запрашивались с клавиатуры, а в конце консоль выдавала полностью матрицу в правильном виде! По сколько я тупой ньюфаг, я решил создать 9 переменных и каждой из них с помощью scanf присваивать значение, ментор обоссал меня (полагаю что и вы сейчас сделаете тоже самое, но срашивать не у кого) и сказал что это тупо, и что нужно делать с помощью операторов for и while, подскажи легион как пральна?
>>850054
#281 #849873
>>849626
Бамп
пратаёб #282 #849914
Изучил главу с пространствами имён - нормально пошла.
>>849937>>850055
sage #283 #849937
>>849914
Держи нас в курсе, блядь.
#284 #850054
#285 #850055
>>849914
Теперь можешь навернуть Александреску
>>850067
#286 #850067
>>850055
И пойти писать на D.
>>850213
#287 #850069
В порыве прокрастинации начал читать 4 издание "The C++ Programming Language" в оригинале.
Запилил игру "Жизнь" на коленке. Обоссыте: https://github.com/TatriX/ai/blob/master/game-of-life/main.cpp
>>850102
#288 #850076
Какой мудак додумался в шапке стишки писать, совсем охуели поэты блять
50 Кб, 1252x810
#289 #850082
Подскажите, почему в данном случае работать с указателями, а не напрямую. То есть если запустить так, то всё работает прекрасно, а если разкомментировать в main кусок, а другой закомментировать, то он будет выдавать совсем не то, что нужно. Возможно вопрос очень глупый, но я пока только разбираюсь в указателях и почему они нужны.
http://ideone.com/uluMMf
#290 #850085
>>850082
Потому что у тебя slicing происходит.
>>850099>>850157
#291 #850089
>>850082
long n = 4;
int a = n;
a = 3;
и ты хочешь, чтобы у тебя n тоже стало 3? вся суть твоего вопроса
>>850099
#292 #850095
>>850082
Как там этим вашим полиморфизмом пользоваться? Так типа: http://ideone.com/mb84jS
#293 #850099
>>850085
Буду гуглить, спасибо.
>>850089
То есть нужно работать именно с тем объектом, который хранится именно по данному адресу, а не с тем, что находится где-то ещё?
>>850105>>850157
#294 #850102
>>850069
ссаными тряпками за такое https://github.com/TatriX/ai/blob/master/game-of-life/main.cpp#L6
Using Pattern = std::vector<Point> или дваже std::array<N, Point> https://github.com/TatriX/ai/blob/master/game-of-life/main.cpp#L27

constexpr Pattern block = {...}; https://github.com/TatriX/ai/blob/master/game-of-life/main.cpp#L32
зачем нужны w, h; если есть уже size() в векторе? https://github.com/TatriX/ai/blob/master/game-of-life/main.cpp#L57
>>850111>>850119
#295 #850105
>>850099

> То есть нужно работать именно с тем объектом, который хранится именно по данному адресу, а не с тем, что находится где-то ещё?


У тебя есть два петуха. Ты отрубил голову одному, но хочешь, чтобы сдохли два. Два разных объекта никак вообще друг с другом не связаны.
>>850113
#296 #850111
>>850102

> ссаными тряпками за такое


Ой, ладно, ну лень мне было в программе на сто строк везде писать std::

> Using Pattern


> constexpr Pattern block = {...};


Про это еще не читал.

> зачем нужны w, h; если есть уже size() в векторе?


Затем что вектор это про хранение клеток, а не про размер поля. Да и за высотой тогда неудобно ходить будет. Или решу я поменять вложенные вектора на один длинный.
#297 #850113
>>850105
На словах я конечно понимаю, попытаюсь ещё раз осознать на деле. Спасибо.
#298 #850119
>>850102

>ссаными тряпками за такое


Ой иди нахуй пидор, using для этого и придумано, всегда так делаю. Книжечку какую-нибудь модную прочитал, что за это надо чморить? Нацики охуели.
#299 #850157
>>850085
>>850099
Да, чёт я погнал про slicing.
#300 #850165
>>849397
Стек вызовов там, кстати, угарно отображается. Завтра скрин сделаю.
218 Кб, 992x1684
#301 #850169
Анон, помоги пожалуйста. Если пользователь вводит строку "A build 2 : 3,3 : 1,2,3,4,5,6", как мне то, что между доеточий засунуть в 1 вектор, а то, что после второго двоеточия - во второй?
>>850170>>850233
#302 #850170
>>850169
И еще, коммы убрать нужно между цифр
#303 #850213
>>850067
Так, с Александреску я прикол понял. А вот про D нет. Может кто объяснить?
>>850310
#304 #850233
>>850169
std::string::find_first_of
#305 #850298
Решил посмотреть Куду и не понимаю, почему не считается.
http://pastebin.com/jYi3siLX

Аналогичный код на C++ AMP считается без проблем.
http://pastebin.com/qyakqxq2
>>850487
#306 #850310
>>850213
Он сейчас его развитием занимается, это такие "плюсы без костылей".
#307 #850354
>>849691
У меня от этого SSL_METHOD
#308 #850487
>>850298

>> cudaMalloc((void)&CU_POSR, *2);


что за указатель?!

>> N


в каком месте он установлен, это дефайн?
он не превышает число допустимых тредов, случайно?
>>850497>>851001
#309 #850497
>>850487

>> for (int next = 0; next < N; next++) {


>> if (first != next) {


>> cuAX_M[first] = 0.1 (cuPOSX[next] - cuPOSX[first]) / sqrt((cuPOSX[next] - cuPOSX[first])(cuPOSX[next] - cuPOSX[first]) + (cuPOSY[next] - cuPOSY[first])(cuPOSY[next] - cuPOSY[first]));


>> cuAY_M[first] = 0.1 (cuPOSY[next] - cuPOSY[first]) / sqrt((cuPOSX[next] - cuPOSX[first])(cuPOSX[next] - cuPOSX[first]) + (cuPOSY[next] - cuPOSY[first])(cuPOSY[next] - cuPOSY[first]));


>> }


>> }


Что это за хуйня? Зачем ты сначала пишешь в память, причем в одну и ту же много раз подряд и получаешь оттуда значение после последней записи, если уж оно так и должно быть (хотя я крайне в этом сомневаюсь), то какого черта ты не использовал локальные переменные (которые хранились бы в регистрах)
>>851001
44 Кб, 2362x2362
#310 #850550
Под линукс в qt-паке идет только gcc.
Допустим мне нужно собирать экзешники и под gcc, и под msvc (под линуксом, да, собирать экзешники, почему-то в гугле ничего подобного нет, будто нельзя сидя под одной осью делать софт под другую)
Как сделать это, как замутить киты ?
#311 #850559
>>850550
Плохо гуглишь, по запросу "qt crosscompilation".
#312 #850565
>>850550
Не видел, чтобы такую хуйню вообще кто-то вытворял, знаю, что когда собирают софт под мак, виндусь и линупс под каждую выделяется хотя бы виртуальная машина с отдельным сборочным сервером.
>>850576
#313 #850576
>>850565

>850550


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


А разгадка одна - тестирование. Ничего не мешает конпилить все где-то на линупсе, а потом раскидывать бинарники по воркерам и тестить. Но это хуйня, потому что билдеров и так должно быть много, а значит там уже есть виртуалки
>>850815
105 Кб, 1604x1176
#314 #850616
>>849397
Вот так выглядит там стек вызовов. К слову, прога из ИДЕ не запускается, разваливается с какой-то ебанутой ошибкой доступа.
Делал путем аттача к запущенному процессу.

Длина одной такой строчки порядка 800 символов, хех.
>>850661>>850678
#315 #850661
>>850616
Чёт какой-то пиздец
#316 #850669
>>850661
это С++, С++ это пиздец
>>850675
#317 #850675
>>850669
>>850661

Я все же больше склоняюсь к тому, что у аффтара что-то с головой было не так.
#318 #850678
>>850616
В хуяндексе работаешь?
>>850687
#319 #850687
>>850678
Нет, в госконторе. Правда, ебля с этим проектом сильно бьет по мотивации. Я даже сроков не могу предсказать, когда я закончу внесение правок в него (предполагая, что я смогу это сделать за конечное время).
119 Кб, 787x466
#320 #850786
Как из этого понять в какой строке у меня лишняя память выделяется?
>>850789
#321 #850789
>>850786
Где вот такая хуита написана, там точно течет
ip = static_cast<int *>(malloc(sizeof(int)));
>>850800
#322 #850800
>>850789
Да я вроде везде где так делаю потом free пишу... И это не зависит от количества входных данных, всегда одинаковое кол-во памяти висит.
>>850818
#323 #850815
>>850576
как ты будешь линковать с виндовыми DLLками, ирод?
#324 #850816
>>850661
Держись, анон. Это правда какая-то лють. Но, вполне вероятно - без этого говна было бы еще сильно хуже

Анон-посоветовавший-тебе-почитать-Александреску
>>852723
#325 #850818
>>850800
ну у тебя валгринд не нашел утечку, если што
обосравшийся #326 #850902
Как сделать доступными переменные из некого пространства имён объявленные в другом файле многофайлового проекта? Надо ли так делать
>>850927
#327 #850912
>>840964 (OP)
Здратити)
Подскажите что нибудь по бекенду на с++, хочу запилить свой хоумпедж
#328 #850926
Поянице вкратце плиз. Вот я хочу сделать функцию-метод, которая вызывает другие функции-методы, которые вызывают другие функции методы. Как это сделать на крестах?
То есть мне нафиг не нужны параметры-аргументы, мне просто нужна отсылочка так сказать. По базовым запросам по теме функции такого не объясняется, только с параметрами. Какую тему мне вообще погуглить?

ПС насколько помню, в яве я запросто это делал, а в крестах чет не получается
>>850947
#329 #850927
>>850902
static

>Надо ли так делать


нет
>>850967
#330 #850931
>>850550
Это все хуита, как минимум заводи виртуалку. У меня прямо сейчас прекрассно работающий на CLang проект не линкуется на MSVC
#331 #850947
>>850926

>я хочу сделать функцию-метод, которая вызывает другие функции-методы, которые вызывают другие функции методы.


А как ты из main() вызываешь обычную func1(), которая вызывает другую обычную func2()?
>>850955
#332 #850955
>>850947
//f1 мне нужна не столько как функция. а просто как отсылка к началу цикла, других отсылок, кроме как вызова функции я не знаю, если знаешь-подскажи
//одна из функции функции, которая вызывает функции
void f1() {
if (bla){
bla;
bla;
..}
};

//функция с функциями, логично, вызывает функции
void f() {
f1();
f2();
};

//если условие такое-то, делает то-то и вызывает функцию с функциями
if (bla) {
bla;
bla;
..
f();
};
обосравшийся #333 #850967
>>850927

>> static


Это значит что данные из пространства имён имеют доступность только в одном файле? Ещё видел что делают заголовочный файл с обьявлениями без инициализации в пространстве имён. И суют этот хедерфайл где требуется. Так нужно? Или надо по другому строить программу(парадигма?)
>>851100
#334 #850981
Плюсач, вот поясни, почему unordered_set нельзя изначально было назвать hash_set? Последний короче и как бэ в любом случае намекает, что элементы неупорядочены. Поклонники стандарта говорят, мол unordered подразумевает, что каждый желающий может реализвать свою версию контейнера, и не обязывает основываться на хэшъ таблице.

Но тогда НАХУЯ у unordered_map наружу торчат методы rehash(), bucket_count(), load_factor()? Вот я работаю в фирме, которой захотелось сделать заточеный под свои нужды unordered_map, внутри которого массив и линейный поиск. Как я тогда должен сделать rehash() и bucket_size()?

И второе, если слово unordered умышленно скрывает внутреннее устройство, то зачем метод rehash() раскрывает его?
>>851080
#335 #850998
Парни, я кажется вкурил.
Я просто забил на матчасть.

1)В .h файле я должен написать декларацию функции(по параметрам), которую собираюсь создать. То есть в моем случае без параметров это будет просто void f();

2)В .cpp файле я должен написать определение функции, то есть что она делает. То есть void Class::f () { }; (могу ли я записать это в .h файле сразу под декларацией?)

3)И затем уже в самом классе я могу вызывать функцию просто написав f(); -верно? (нужно ли при вызове писать void?)

>>850959
>>850939
То есть вызов функции здесь будет :
код...
код...
checkEN();
dead();
код...
код...

Верно?

И еще вопрос уже о другом немного.

У меня есть определенные данные. Потоки, функции и тд.
У меня есть куча .cpp с разными классами.
Мне нужно как-то по-простому включить эти данные в в .cpp файлы, чтобы ясен пень не копировать каждый раз.
Как это сделать?

Вот в любой .cpp файл я включаю(#include) data.h.
data.h декларикует класс в data.cpp.
Как сделать так, чтобы класс data 'слился' с любым другим классом .cpp? То есть если я просто сделаю #include то с точки зрения комплиятора это будет выглядеть как разные классы, идущие поочередно, без зависимостей от друг друга.

И может нужно делать не класс, а что-то другое? Спрашиваю потому, что знаю что, допустим, в ява все является классом, но в крестах вроде бы не так.

ПС и самый неважный косметический вопрос, у с++ есть паки, в которые можно складывать классы?
Я ява допустим есть Проект->Паки->классы-файлы. Можно в один класс включить другой import.packagename.classname.
Можно также сделать с с++?
#335 #850998
Парни, я кажется вкурил.
Я просто забил на матчасть.

1)В .h файле я должен написать декларацию функции(по параметрам), которую собираюсь создать. То есть в моем случае без параметров это будет просто void f();

2)В .cpp файле я должен написать определение функции, то есть что она делает. То есть void Class::f () { }; (могу ли я записать это в .h файле сразу под декларацией?)

3)И затем уже в самом классе я могу вызывать функцию просто написав f(); -верно? (нужно ли при вызове писать void?)

>>850959
>>850939
То есть вызов функции здесь будет :
код...
код...
checkEN();
dead();
код...
код...

Верно?

И еще вопрос уже о другом немного.

У меня есть определенные данные. Потоки, функции и тд.
У меня есть куча .cpp с разными классами.
Мне нужно как-то по-простому включить эти данные в в .cpp файлы, чтобы ясен пень не копировать каждый раз.
Как это сделать?

Вот в любой .cpp файл я включаю(#include) data.h.
data.h декларикует класс в data.cpp.
Как сделать так, чтобы класс data 'слился' с любым другим классом .cpp? То есть если я просто сделаю #include то с точки зрения комплиятора это будет выглядеть как разные классы, идущие поочередно, без зависимостей от друг друга.

И может нужно делать не класс, а что-то другое? Спрашиваю потому, что знаю что, допустим, в ява все является классом, но в крестах вроде бы не так.

ПС и самый неважный косметический вопрос, у с++ есть паки, в которые можно складывать классы?
Я ява допустим есть Проект->Паки->классы-файлы. Можно в один класс включить другой import.packagename.classname.
Можно также сделать с с++?
>>851035
#336 #851001
>>850487

> cudaMalloc((void)&CU_POSR, size*2);


Там так, опечатался.

> N


Это const int
http://pastebin.com/XwfVxBsG

>>850497
Спасибо, поправил.
>>851133
#337 #851035
>>850998
1. да, но если у тебя класс будет использоваться ИСКЛЮЧИТЕЛЬНО ЕДИНОЖДЫ, например, как скрытая реализация, то можно его определить в файл сорцов (cpp)
2. да, например
class C {
void f() {
printf("f()\n");
}
}
3. не нужно

Какие данные, их разве нельзя уместить в один заголовочный (h) файл и потом везде, где нужно, инклюдить?
>>851127
#338 #851080
>>850981
1) Легаси блять. У майкрософта вроде уже была такая хуитка в стандарте;
2) Чтобы созвучно было, лол. Так же хорошо помогает забыть об обосрамсе комитета с hash_map.
>>851443
#339 #851100
>>850967

>Это значит что данные из пространства имён имеют доступность только в одном файле?


Это значит что переменная доступна до окончания программы

>Ещё видел что делают заголовочный файл с обьявлениями без инициализации в пространстве имён. И суют этот хедерфайл где требуется. Так нужно?


Так можно. Так например настройки программы реализуются которые нужны во всех ее частях. Но вообще, объявлять переменную и не инициализировать это моветон.

>Или надо по другому строить программу(парадигма?)


Понимаешь, если ты будешь всюду пихать глобальные переменные бездумно, то нахуя ты вообще плюсы изучаешь? Можешь джаву например попробывать, или там дотнет какой.
#340 #851108
подскажите пожалуйста!

В общем как сосчитать с бинарника динамический массив, подскажите как это сделать пожалуйстаа..

или куда посмотреть, а то способов много а у меня не получается ни один
>>851113>>851444
#341 #851113
>>851121
#342 #851121
>>851113
ты крут конечно,
но там еще всё страшнее..

есть что по проще?:)
размер файлика примерно 1Mb
>>851124
#343 #851124
>>851121
и да, я изучаю язык с помощью vs
#344 #851127
>>851035
Спасибо.

На счет данных.

Вот есть у меня декларация класса HelloWorld в .h

Затем у меня есть иницилизация элемента класса HelloWorld в .cpp

У меня есть данные: переменные и функции. Все это надо чтобы было включено в иницилизацию класса, любого, а не только HelloWorld.

Проблема еще в том, что в data есть осылки к текущему объекту класса( то бишь this).

В итоге я сейчас ломаю голову как это сделать.
Надо создать функцию void Data(), но тогда её надо полноценно декларировать, да я еще хз надо ли пихать класс.
Ууу, как с непривычки запутанно.
#344 #851127
>>851035
Спасибо.

На счет данных.

Вот есть у меня декларация класса HelloWorld в .h

Затем у меня есть иницилизация элемента класса HelloWorld в .cpp

У меня есть данные: переменные и функции. Все это надо чтобы было включено в иницилизацию класса, любого, а не только HelloWorld.

Проблема еще в том, что в data есть осылки к текущему объекту класса( то бишь this).

В итоге я сейчас ломаю голову как это сделать.
Надо создать функцию void Data(), но тогда её надо полноценно декларировать, да я еще хз надо ли пихать класс.
Ууу, как с непривычки запутанно.
>>851426
#345 #851133
>>851001
Вот неокончательный вариант.
http://pastebin.com/BD0p1XaK

Если создать CUDA-аналог, по большей части void APM_Math() заменить на:
http://pastebin.com/YZYf8qv3
То ничего не считается, но компилируется нормально.
#346 #851426
>>851127
Запутанно потому что ты, мудило, даже не можешь открыть книжку и почитать про наследование, зато уже наспамил на сосач и выебал всем мозги.
>>851580
#347 #851439
Если у меня есть написанная вручную либа .lib, и она находится в одном солюшне с проектом, куда ее нужно линковать, как это сделать с помощью cmake?
#348 #851443
>>851080
А что за история с обосрамсом hash_map была?

Дело такое, что у нас для неупорядоченных ассоциативных контейнеров _ уже _ есть три структуры данных, массив и две хешъ таблицы.

Никак не можем придумать название обволакивающего интерфейса, UnorderedSet слишком длинно и напоминает СТЛ, а HashъSet слишком конкретно и намекает на внутренние детали имплементации.
#349 #851444
>>851108
можно паре итераторов ofstream следать copy в вектор через back_inserter, получится в три строчки
>>852367
#350 #851445
Устроился на работу чтобы кодить на vhdl, а посадили за плюсы на билдер шестой. Ни плюсов ни билдера не знал. Помыкавшись чутка освоился и мне дали задание - найти причину вылета программы с синим экраном. Точнее не так.
Есть прога на плюсах, которое что то отсылает и принимает с оборудования через пси плату с которой прога работает через драйвер по прерываниям. Данную плату надо сначала открыть, проиницилизировать, а по окончанию остановить и закрыть.
Когда отключаешь оборудование, выходишь из программы и включаешь оборудование обратно, возникает синий экран смерти.
Вопрос - что мне рассмотреть в первую очередь в коде программы? Есть подозрение, что тут косячит неправильное закрытие пси платы. Или какая то бабуйня с потоками или что-то с динамической памятью. Я вообще без понятия. Помогите братцы!
#351 #851535
>>851445
наверняка какой-нибудь дискриптор не чистится, или обращение к нему идет после чистки.
>>851549
#352 #851549
>>851535
Надо зачекать. Именно после выключения оборудования и после выхода из программы, а потом включении оборудования выходит синий экран. Почитал про ошибку, что то про обращение аппаратуры к запрещенным участкам памяти
сокеты #353 #851579
Понимаю, что вопрос про сети, а не язык C++.
Учусь программировать на C++, потому вопрос сюда.
Есть сервер, сервер запускает поток ожидания подключения клиента, поток ожидания получает сокет клиента и создает для него новый поток обмена данными.
Общение с клиентом происходит через recv() и send(), которые блокируют поток до send() и recv() со стороны клиента.
Поток обмена клиента будет иметь доступ к recv_buff, recv_buff_len, send_buff,send_buff_len. К этим же объектам будет иметь доступ код работы с клиентом, который будет просто знать, что если в recv_buff_len что-то отличное от нуля, то надо считать recv_buff_len байт из recv_buff. Так же и с send_buff.
Но тогда потребуется 2 потока, так как recv() и send() блокируют поток и не могут независимо обрабатываться в одном потоке, скорее всего и для кода обработки клиента еще поток понадобится.
В общем чувствую что что-то я не так делаю в организации своей программы, подскажите плз, как обычно обрабатывается обмен клиент-сервер. Предполагается что я не знаю когда клиенту приспичит что-то отправить, а когда серверу. Хочется универсальности.
>>851584>>851587
#354 #851580
>>851426
Еее, то самое, спасибо. Мне и надо было просто указать на тему.

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

В яве сидишь, просто хуячь функции только так, хоть рекурсую пили-и так сойдет. А в крестах мне пришлось уточнять как это делать. Хотя подумаешь, функция, она и в Африке функция.
#355 #851584
>>851579
Читац исходники вебсерверов и прочего, читац статьи про асинхронность, ивентлупы, очереди сообщений и всё остальное.
>>851589
#356 #851586
1 поток на приём, он спавнит на каждого нового клиента свой поток. В этом потоке хэндлится recv. Если в recv есть что-то интересное, кидай в очередь ивент. Ивенты обрабатывай отдельным потоком своими хэндлерами. На пример, если у тебя один из клиентов хочет всем другим разослать сообщение, то он отправляет его на сервер. Поток клиента считывает его, определяет тип ивента и кидает его в очередь. Поток на очереди применяет соответсвтующий хэндлер, проходится по мапе с объектами и рассылает всем сообщение.
>>851587>>851593
#357 #851587
#358 #851589
>>851584

>Читай исходники вебсерверов


Я только учу cpp, то что сам написал с трудом понимаю

>читац статьи про асинхронность


Я работаю с синхронными сокетами

> ивентлупы,


Да там что-то про то чтобы не плодить кучу потоков.

Вобщем реализую как могу криво, а потом буду изучать всякие технологии, я прост пока что язык изучаю, а чтобы было интересно пишу делаю свой™ класс для работы с клиент-сервер. Думал, что все как-то проще.
#359 #851593
>>851586
Пока что ясно и интересно, надо обдумать.
#360 #851615
Неужто та пресловутая CodeLite из шапки есть лучшая среди бесплатных и кроссплатформенных?
мимо в поисках нормальной ide под unix
>>851617
#361 #851617
>>851615
Культякреэйтор, кдевелоп, если есть мощная пока — экипаж с цдт.
#362 #851618
>>851617
Пека *
#363 #851624
>>851617

>экипаж


Эклипс *
#364 #851629
>>840964 (OP)
Поясните за std::string, что это за тип и чем от обычного string отличается? Нахуй он нужен и почему без этого std:: не выходит насрать в гуй?
>>851641>>851708
#365 #851641
>>851629
std::string для кирилицы тоже подходит, просто string так не может. для азиатских языков нужен ::string
>>852099>>852119
#366 #851708
>>851629
Что за обычный string?
У std::string размер элемента - sizeof(char), то есть 1 байт, естественно, без игры локалями, больше двух языков выдавить из него ничего не удастся, а из азиатских алфавитов - то вообще нехуй делать с таким типом (для этого есть std::wstring - тут уже два байта на элемент), как и сказал уважаемый господин выше.
>>852099>>852119
#367 #851766
Можете ответить на пару вопросов? Программирую на PHP, сейчас учусь программированию на C++, как я понимаю строки тут нужно помещать в массив char, к примеру char string[] = "Lorem ipsum dolor sit amet" т.е. одна буква будет равняться одному элементу массива string, а из скольки тогда максимум элементов может состоять массив? Или сколько максимальное количество символов может содержать строка string[]?
И ещё как помещать много строк в переменную? В php это бы выглядело просто
$string = "
Lorem ipsum dolor sit amet
consectetur adipiscing elit.
Ut a dui est. Fusce lobortis luctus augue a
onvallis. Vestibulum ante ipsum primis
...
"
>>851874
#368 #851775
>>851445
Прога не при чём, рушит всё драйвер в ядре.
>>852188
#369 #851790
>>851617
и что из этого все же лучше/удобней?
эй, почему intellij идею сделали фри, а лиона - нет :с
>>851814>>852001
#370 #851814
#371 #851874
>>851766
std::string смотри. char* используют сишники, мамонты, и в редких случаях экстремальной производительности
>>851876
#372 #851876
>>851874
мне нежен char
#373 #852001
>>851790
кряк есть, работает под 2016.2.2 нормально
Но, у него проблемы с распознаванием имен и еще куча багов, я заебался уже багрепортить им.
#374 #852083
Поясните за наследованность, я кучу всего перечитал, но все не то.

Есть класс A, который наследует суперкласс. Есть класс B, который наследует тот же суперкласс.

Мне нужно чтобы в одной из функции класса A была функция класса B.

Мои действия:
Наследую в A класс B. Убираю наследование суперкласса в A, так как наследование есть в B.

Затем я в одной из функции класса А вызываю функцию из В, то есть просто пишу void Func();

Иии, ничего не проиходит. ИДЕ никаких ошибок также не показывает. То есть функцию видить, но почему-то не 'копирует' определение-начинку функции.

Что я делаю не так?
>>852091
#375 #852091
>>852083
http://ideone.com/LB0HR2
Что ты там прочитал, пидор? Ты даже загуглить не пробовал.
>>852103>>852106
#376 #852099
>>851641
>>851708
Что за хуйню я только что прочитал?
#377 #852103
>>852091
Вот это вот что?:
A a;
a.foo();

Как это понимать? Что такое a?
>>852106
#378 #852106
>>852091
ПС, у меня все заработало, я просто при вызове функции писал void.

Но все равно объясни плизки вот это >>852103
10 Кб, 475x328
#379 #852119
>>852368
#380 #852126
Учу c++, что нужно учить чтобы делать gui приложения на windows?
>>852130>>852168
#381 #852130
>>852126
Графический класс. йоба
#382 #852133
Как через цикл создать несколько 10 файлов?

#include <fstream>
#include <windows.h>

using namespace std;

int main()
{
LPCWSTR szDirPath = L"testdir";
CreateDirectory(szDirPath, NULL);

for (int i = 0; i < 10; i++)
{
ofstream file;
file.open("testdir/text file.txt");
file << "Работа с файлами в С++";

return 0;
}
}
#383 #852168
>>852126
Qt5_если_ты_хочешь_нативный_гуй,_или_всякие_опенгл_релейтед_вещи_типа_SDL_если_игровой
82 Кб, 1120x1046
#384 #852176
Пожалуйста, помогите дебилу, не могущему в ООП
Если конечный класс наследует один интерфейс с чистой виртуальной функцией, и один класс в котором эта функция реализуется, что нужно исправить, чтобы ReB можно было инстанцировать?
http://pastebin.com/sHWFhG8g
>>852181
#385 #852181
>>852176
ReB::A() override { ReA::A() };
>>852197
#386 #852188
>>851775
В другой проге, использующий данный драйвер и плату, ничего не крашится.
Я смог выловить ошибку на синем экране IRQL_NOT_LESS_OR_EQUAL. Погуглив выяснил, что или драйвер обращается к запрещенному участку памяти то ли ещё хуй знает что.
Надеюсь, что поможешь мне навестись в правильном направлении, а то я совсем нихуя не умею и не знаю.

Пока что решил сделать клон куска программы, как новую прогу, дабы точно локализовать место косяка в коде.
>>852295
#387 #852197
>>852181
Спасибо,
Еще один вопрос, если в ReA вместо override - final, это уже никак не исправить, нужно уже разделять интерфейсы, чтобы ImB не содержал ту функцию, которая финализируется в ReA ?
>>852230
#388 #852230
>>852197
Тогда, по идее, поможет ReA* biba = new ReB;
#389 #852295
>>852188
Тебе совсем не понятно, что драйвер не должен крашиться кто бы его ни использовал?

Если его используют некорректно (суют неверные адреса, дескрипторы и любые другие параметры), он должен уметь это обрабатывать и сообщать об ошибке, а не валить систему в BSOD.
>>852305>>853939
#390 #852305
>>852295
Ну это же шиндовс. Хуяк Хуяк и в продакшен, всё дела.
>>852308
#391 #852308
>>852305
Ну так проблема не в программе, а в драйвере.
#392 #852320
Можно ли настроить переменные среды для студии 2015, чтобы не надо было в каждом проекте прописывать пути к boost? Как это сделать?
>>852430>>860090
#393 #852367
>>851444
Спасибо.
Я решил не париться с С++.
Лучше в паскале попробую, тот хоть чутка знаю.
#394 #852368
>>852119
Бля, а ведь точно, про литералы давно не вспоминал.
>>852408
#395 #852408
>>852368
А при чём тут литералы?
>>852749
#396 #852430
void mem = malloc(sizeof(Header));
mem = ( void
) packet->getHeader().packet_size;
boost::asio::write(*this->m_socket, boost::asio::buffer(mem, sizeof(Header)) );

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

this->m_socket->write_some( boost::asio::buffer(mem, sizeof(Header)) );

Тот же эффект.

>>852320
Каждый раз нужно прописывать вручную через гуи, либо ..
Попробуй освоить cmake, там весь солюшн с либами, путями и прочими долгонастраевыми через гуи вещами генерируется за 2 секунды через батник или сх, если все правильно написал.
>>852432
#397 #852432
>>852430
сука
std::cout << packet->getHeader().packet_size << "\n";
void mem = malloc(sizeof(Header));
mem = ( void
) packet->getHeader().packet_size;
>>852435
#398 #852435
>>852432
сука
std::cout << packet->getHeader().packet_size << "\n";
void (POINTER)mem = malloc(sizeof(Header));
mem = ( void (POINTER)) packet->getHeader().packet_size;
>>852882
#399 #852544
Анон, а есть какие-то библиотеки, чтобы с док-файлами работать?
Что нужно: заполнение по шаблону, подчёркивание и зачёркивание слов.
>>852546
#401 #852549
>>852546
так, а теперь немного странного: это всё будет работать на ведре? Хочу мультиплатформу замутить.
>>852554
#402 #852554
>>852549
У тебя голова на плечах есть? апи под ведро есть - будет, нет апи - не будет.
#403 #852560
>>852546

> .ua


Някни.
>>852562
#404 #852562
>>852567
#405 #852567
>>852562
Хуйnya
#406 #852723
>>850816
Прикол в том, что Александреску я быстренько пробежался. Ну да, типа уловил кое-каие принципы. Но код от этого читабельнее не стал, лол.

Ну, пока ковыряюсь в этом гавне. Будет возможность съебать в другое место, где хотя бы будут люди, могущие что-то подсказать и объяснить (или задачи близкие моему уровню), съебусь.
Ибо скилл от ковыряния в этом гавне ни на йоту не растет. Скилл, очевидно, растет когда ты пишешь код в первую очередь. А тут я три месяца пописал код и вручили эту парашу.
>>852807
#407 #852749
>>852408
Я через минуту как запостил почитал, что я сказал, и понял, что обосрался.
#408 #852807
>>852723
На самом деле - скилл растет как раз тогда, когда ты читаешь код. Ты пропускаешь сквозь себя работу других программистов, и постоянно узнаешь что-то новое (и плохое, и хорошее). Когда ты сам пишешь код - ты ничего нового не узнаешь.

тот же анон
>>852874>>852976
#409 #852844
>>840964 (OP)
Где в шиндовс держать репозиторий третьих вечеринок?
Вот допустим, скачал я проект, которому нужен буст, небо и аллах. Можно ли как-то указать вижал сдудии глобально, где находится папка со всеми собранными либами и заголовками? И чтобы все новые проекты, которые я пытаюсь собрать, сразу смотрели зависимости том, и не сношали мне мозг? и чтобы его можно было просто расширять
#410 #852874
>>852807

>На самом деле - скилл растет как раз тогда, когда ты читаешь код. Ты пропускаешь сквозь себя работу других программистов, и постоянно узнаешь что-то новое (и плохое, и хорошее). Когда ты сам пишешь код - ты ничего нового не узнаешь.


Пиздеж бессовестный. Скилл повышается именно при написании кода, когда ты сталкиваешься со всеми проблемами и мелочами, с которыми сталкивались те самые хорошие программисты.
Писать свой код с нуля лучше, чем читать чужой. А еще лучше писать свой и читать в процессе чужой, сравнивая свои решения с чужими.
#411 #852881
>>852844
/usr/lib /usr/include
#412 #852882
>>852435
ты совсем дурак или толсто траллишь? чем malloc/calloc от new отличается?
>>852896
#413 #852895
>>852844
endzhoy your шindows
#414 #852896
>>852882
Ничем.
#415 #852976
>>852807

>На самом деле - скилл растет как раз тогда, когда ты читаешь код.


Может у опытных пацанов и так. Для новичков наверное лучше все-таки руку понабивать, освоиться и все такое.
#416 #853011
Позвольте вам поднасрать.
Почему, когда я использую серийный for, то код ниже перестаёт работать?

[CODE lang="C++"]int main() {
int array[3];
for (auto i=0; i<=3; i++) // или for (auto i : array);
array=i;
for (auto i=0; i<=3; i++) // или for (auto i : array);
std::cout << array;
}[/CODE]
#417 #853015
>>853011
Звиняюсь за закравшийся табик,
#418 #853021
>>853011
И за проёбаное в конце предпоследней строчки.
#419 #853028
Сжирание квадратных скобок - фича программача? Тест: [] [f] [fdfdg]
#420 #853031
>>853011
ты какую-то хуйню написал полную.
i в одном случае это число от 0 до 3, во втором - это содержимое array
>>853036
#421 #853036
>>853031
Хуйня получилась из-за того, что скобочки съелись у array. Просто в книжке аналогичный код, и я сделал тютелька в тютельку. А при вы полнении выскакивает ошибка сегментации.
#422 #853045
>>853011
Индексы проебал, i < 3 должно быть либо array размером 4.
>>853058
#423 #853058
>>853045
Индексы почему-то сжираются при постинге, а <= я давно поправил. Суть-то в том, что обыкновенный for работает, а серийный for - нет (при исполнении - ошибка сегментирования).
>>853066
#424 #853066
>>853085
#425 #853085
>>853066
Ай, точно же. Серийный for возвращает ссылку на элемент. Спасибо, дошло наконец.
#426 #853126
Насколько это (не) нормально — наследоваться от STL-контейнеров?
>>853151>>853270
#427 #853151
>>853126
"нормальность" -- это всего-лишь показатель используемости того или иного метода. если ты ориентируешься по этому показателю, то съеби. а так, всё зависит от твоей задачи и о того, перевесят ли плюсы того или иного метода его минусы. обычно от стльных контейнеров не наследуются из-за отсутствия у оных виртуального деструктора, что пускает по шляпе полиморфность и ведёт к ликам. в стль практикуется разделение контейнеров и алгоритмов (те обычно выделены в свободные функции). попробуй сделать на подобии этого. иной вариант сделать так:
template<typename T>
class Yoba {
std::vector<T> vec;
...
};

или, в принципе, вот так
template<typename T>
class Yoba : private std::vector<T>
{
using vector = std::vector<T>;
public:
using vector::push_back;
using vector::operator[];
using vector::begin;
using vector::end;
Yoba operator*(const Yoba & ) const;
Yoba operator+(const Yoba & ) const;
Yoba ();
virtual ~Yoba ();
};
20 Кб, 720x400
#428 #853194
Антоны, кто тут гуру GCC?

Обьясняю ситуацию. Есть проект, древний, собирается под старые (очень) Винды на новом MiinGW-w64. К бинарнику libstdc++ линкуется статически. Libstdc++ в свою очередь динамически тянет из msvcrt.dll функции. Прикол в том что на говне мамонта под которое надо компилить проект в msvcrt.dll нету всех необходимых экспортов.

Ок. Я взял в руки HIEW и IDA, покопался в таблице импортов получившегося бинарника, посмотрел что же использует эти отсутствующие импорты и понял что их использует функции из libstdc++ которые моим кодом никогда не вызываются. Из таблицы импортов я вынес нахуй эти ненужные импорты, занопил от греха подальше их вызовы и... все заработало. Какой я блядь молодец.

Теперь стоит вопрос об автоматизации этих костылей:

1) Вариант крайний, не предпочтительный. Написать патчер (хоть блядь на шелле с использованием dd или еще какого говна, всеравно под cygwin'ом компилю), который потом в мейке вызывать. Просто и сурово.

2) Пересобрать libstdc++, вычистив оттуда ненужное говно. Самый элегантный, но гайда по пересборке статического варианта libstdc++ для MinGW я не нашел.

3) Заставить на этапе линковки ld подменить импорты у статически приделываемой libstdc++. Вот тут я вовсем хз, возможно ли в принцыпе такое провернуть? Правда еще остается вопрос с кодом который вызывает эти импорты. Как я говорил, он в принципе никогда вызываться не должен, но его присутствие всеравно мне не нравится.

Собственно, гуру пикапа GCC и MinGW - подскажите по 2-му и 3-му пункту. Что из этого реально и где про такое почитать?
>>853210>>853302
#429 #853210
>>853194
Может проще сделать dll-прокладку, которая будет дергать системные функции из msvcrt, где они доступны, или заглушки, если системной функции нет.
>>853323
#430 #853247
>>852844
Может все-таки есть у кого идеи по данному поводу?
>>853287
#431 #853270
>>853126
Нельзя. У всех STL контейнеров невиртуальный деструктор, соотв-но бибу соснешь.
Если тебе надо как-то что-то кастомизировать - напиши обертку.
#432 #853287
>>853247
чому бы не использовать cmake?
>>853455
#433 #853302
>>853194
Может ты просто поставишь на те машины более-менее свежий пакет Visual C++ Redistributable?
>>853323
#434 #853323
>>853210
Ты имеешь в виду подсунуть проксевый MSVCRT, в котором будут сквозные экспорты существующих функций и заглушки для не-существующих? Мне не хочется поставлять еще одну DDL'ку с проектом, да и вариант такой-же топорный как и первый мой предложенный с патчером. Лучше уж патчер тогда.

>>853302
Я проверял этот вариант. Более новые MSVCRT импортят из KERNEL32 и прочих системных DLL функции которых на некроговне нет. И чем новее, тем больше неудвлетворенных зависимостей. Так что приходится работать с дефолтным MSVCRT. Да, проект KernelEx я тоже проверял, но увы оно эмулит далеко не все экспорты KERNEL32 которые нужны новым MSVCRT.
>>853338
#435 #853338
>>853323
Тогда собирай на таком же старом mingw, как и твоя винда.
#436 #853455
>>853287
А что я с ним буду делать? Либы как им собрать я понимаю, а куда бы разместить кучку собранных либ или симлинков на них, чтобы студия автоматом от туда все брала.
>>853461
#437 #853461
>>853455
Ну посмотри ты блять в настройках сборки, чё как маленький.
>>853740
#438 #853740
>>853461
Не, ему надо, чтобы они автоматически добавлялись в левые проекты, насколько я понимаю. Начиная с VS2010 убрали возможность делать общие настройки для всех проектов, в общем-то, теперь будешь сосать лапу.
#439 #853939
>>852295
Но не переписывать же мне заводской драйвер поставляемый к оборудованию :(
#441 #854303
Ананасы, хочу десктопить на крестах (фриланс). Встал вопрос о выборе гуев. MFC почти ничего не дает из коробки + целевая платформа только шиндовс. На QT нужно покупать дорогую лицензию + громоздкость, хоть он и прекрасен. Какие еще стулья есть? wxWidgets ведь для совсем отбитых, зато швабодка и windows/unix/osx в таргетных платформах. Должны быть еще какие-то швабодные кавайные гуи, подскажите пожалуйста.
>>854304
#442 #854304
>>854303

>QT нужно покупать дорогую лицензию + громоздкость


лицензия только на статическую линковку, статический кьют +10 мб к экзешнику, максимум.
>>854307
#443 #854307
>>854304
То есть я могу в инсталлер класть qt.dll и продавать так программу, не покупая лицензии? Откуда токая инфа?
>>854308
#444 #854308
>>854307

>класть qt.dll и продавать так программу, не покупая лицензии


да

>Откуда токая инфа


учи матчасть
>>854311
#445 #854311
>>854308
Почитал, понял. Спасибо за инфу, анончик.
#446 #854357
Есть число, и это число нужно получить прибавляя 6 или отнимая 7 минималтным количествлэом действий. Как это сделать?
184 Кб, 1920x1080
#447 #854359
Котаны, умоляю, помогите.
Нужно настроить sdl, sdl_draw и sdl_ttf в visual studio.
Всю ночь сижу, не могу уже, спасайте
sage #448 #854538
>>854359
Ставь линакс.
#449 #854555
Анон, а почему ты ещё не перешёл на божественный code::blocks?!
>>854621
#450 #854573
>>854359
cmake изучи или еще что-нибудь, что позволит тебе генерировать проекты без заебов (хотя смаке мне не очень нравится, но что поделать)
>>854583
#451 #854583
>>854573

>cmake


Да лучше самому скрипты сборки писать чем это жрать.
>>854725
#452 #854601
>>854359
А SDL есть встроенные возможности рисовать простые фигуры (круги, квадраты, треугольники)?
#453 #854621
>>854555
Потому-что это кусок говна
>>854632
#454 #854624
>>854359
#undef main перед main(), выстави форсированно консольный проект в опциях, и гугли про "SDL stdio_legacy_definition", если начнет гундеть про какое-то говно типа iob_file
#455 #854632
>>854621
Обоснуй, маня
>>854637
#456 #854637
>>854632
Для кроссплатформы есть qtcreator, для шиндовс есть Visual Studio. Какие приемущества у твоей залупы по сравнению с этим?
#457 #854685
>>854601
Только линии.
>>854820
#458 #854725
>>854583
Ну да, я бы и сам не против, только ни одна нормальная IDE не может жрать ни мейкфайлы ни какие-либо другие, кроме своих (за исключением clion'a, который проекты делает на основе cmake). Я бы и сам, конечно, рад перейти на WAF или SCons, только вот ни автокомплита, нихуя тебе не будет, а ебаные полу-редакторы типа VIM или emacs не могут мне позволить жрать громадный проект, при этом следя за вложенными проектами, такие дела.
Вот теперь и приходится жрать, что дают.
>>855044
#459 #854819
>>854601
Тогда не пойму, чому его всем советуют. Это локальный мемчик?
>>854820>>854835
#460 #854820
>>854685
>>854819
быстрофикс
#461 #854832
>>854601
Читай OpenGL, тебе SDL нужен будет в том случае только для создания контекста. А в OpenGL минимальный набор - полторы функции, которые даже Сталин бы освоил (без расстрела Khronos'а, естественно).
#462 #854835
>>854819
А в чем проблема написать функцию для рисования квадратов\треугольников самому?

SDL неплохая вещь. я во всех своих уебанских проектах использую
>>855322
747 Кб, 1920x1080
#463 #854838
Посоветуйте ide для линуха, чтобы типа visual studio. Вместо Clion у меня пикрилейтед.
>>854840>>854897
#464 #854840
>>854838
qtcreator
#465 #854897
>>854838
Прямо сейчас форматируешь жесткий диск и укатываешься обратно на винду, обмазываясь VS. Глупо в 2k + 2^4 думать, что есть годные IDE кроме VS
>>854933
#466 #854933
>>854897
Но vs говно
>>854977
#467 #854977
>>854933
VS это лучшее, что случалось с C++, прыщеблядок
>>854979
#468 #854979
>>854977
Но вс это тормозящее говно.
другойанон
>>855028>>855233
#469 #855028
>>854979
vs не тормозит, отличная ide
но всё равно проприетарное зонданутое говно
#470 #855043
Code::Blocks
#471 #855044
>>854725

>за исключением clion'a, который проекты делает на основе cmake


И в этом он ничем не отличается от других IDE, использующих свои собственные форматы проектов, т.к. cmake-файлы он переваривает только им созданные.
>>855118
#472 #855046
C++. Аноны, срочно.
Есть функция
float huy (float x1, float x2)
{
float X;
X = x1 + x2;
return X;
}
Она считает X.
Мне нужно из другой функции обратиться к этой и вывести X.
Бля, надеюсь понятно.
Я пытался вывести результат посредством
float X1 = huy ();
Но нихуя.
>>855048>>855061
#473 #855048
>>855046
Короче: как из одной функции вывести результат, посчитанный в другой функции?
#474 #855061
>>855046
Чё бля нихуя? Ты параметры пробовал функции передавать?
#475 #855118
>>855044
По сути да, но хотя бы поддерживает хоть какой-то генератор.
Вообще, там очень много просят люди, но жид-брэйнс не спешат реализовывать поддержку, скажем automake или makefiles, потому что других багов достаточно.
#476 #855223
Кто выдаст ошибку, если не определена функция main и если определено 2 функции main?
В обоих случаях компоновщик когда уже в exeшнике из библиотек будут ссылаться на main, правильно? Потому что компиллятору похер, он не формирует автоматически эту функцию.
#477 #855233
>>854979
Друг, пора выбросить свой семилетний Атлон
>>855501
#478 #855251
Почему stl такая маленькая?
>>855259>>855312
#479 #855259
>>855251
Потому что там куча больших костылей.♿️
3 Кб, 244x178
9 Кб, 377x303
#480 #855285
Не могу понять почему так происходит в выделенной строке.
Сначала а присваивается b, потом c присваивается d,
а потом вдруг резко a присваивает d. Почему так ?
>>855345>>855358
#481 #855312
>>855251
В комитете одни старики, комитет очень забитит производительность и принятием очередного стандарта они пытаются выдавить максимум говна из старых вещей, зачастую не добавляя каких-либо в корне новых. Спустя только 6 лет после появления ЦоПэ11 в библиотеку приехали функции для работы с файловой системой, ну, конечно, всякие ништяки тоже есть (особенно для шаблоноебов полезные, например, сворачивание выражений). Сторонних либ, конечно, итак полно, но самый основной вопрос для меня, где, вашу мать, сериализация?! Мне бы статической за глаза хватило бы, но, блять нет же. Году к 2026, наверно, родят.
>>855320
#482 #855320
>>855312
Зачем в ЦоЖоПэ17 добавили if constexpr(), конпеляторы ведь издревне умеют выкидывать неиспользуемые операции при включенных оптимизациях.
>>855362>>855392
#483 #855322
>>854835
Тащемта нарисовать наклонную линию с антиалайсингом непросто, нужно изобретать велосипед, за что принято расстреливать.
Только готовые либы, например, SDL_gfx.
#484 #855331
У меня глупый такой вопрос. А вот все эти нововведения, стандарты и добавления в язык/компиляторы, оно ведь только на уровне, так сказать, программиста делается? То есть, можно ли было в 80-ых написать всё то же самое (добиться выполнения некоторых действий/получения результата), что есть сейчас, или есть что-то, что по каким-то причинам именно невозможно, какое бы количество костылей не использовалось? Если есть такое, было бы интересно пример увидеть.
>>855362
#485 #855345
>>855285
А ты что ожидал? Что а присвоится с? Так оно уже d.
#486 #855358
>>855285
Потому что (a = b) возвращает a: http://ideone.com/nP6mv9
(a = b) = c = d -> (выполняются скобки, значение b присваивется a) -> a = c = d -> (значение d присваивается c) -> a = c -> (значение c (равное d) присваивается a) -> a.
#487 #855362
>>855320
Чтобы вынести что-то там в компайлтайм. Самое смешное, что constexpr не даёт вообще никаких гарантий, лол, это всё такая же услужливая просьба компилятору как inline.
>>855331
Абсолютно всё было реализуемо, просто большинство всё ещё писало на асме/коболе/алголе/обоссаном диалекте лиспа и хотелки были совсем другие. Ну и ограничения на самих компиляторах были другие — попробуй сделать неоднопроходную залупу с всевозможными выводами типов, дедукцией шаблонов, компайлтайм хуитой и тд когда у тебя 640кб (те самые знаменитые, лол) оперативки в лучшем случае. Явно не очередным рекурсивным спуском дело заканчивалось.
>>855392
#488 #855392
>>855320

> Зачем в ЦоЖоПэ17 добавили if constexpr(), конпеляторы ведь издревне умеют выкидывать неиспользуемые операции при включенных оптимизациях.


>>855362

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



Вот так выглядит беседа двух олигофренов.
>>855395
#489 #855395
>>855392

>constexpr guarantees compile-time evaluation is possible if


https://isocpp.org/blog/2013/12/constexpr
А вот так по-олигофренски работает constexpr, щито оделать, какой язык такая аудитория.
>>855416>>855419
#490 #855416
>>855395
Шестой гусь уже нормально делает, на 4.8 не смог проверить - сломал библиотеки, лол. Даже без constexpr создает, так что да, constexpr он, вроде как и интересен, но и одновременно бесполезен оказался.
#491 #855419
>>855395
Ты третьим к ним присоединился, что ли?

В constexp if допускаются только константные выражения (вычисляемые на этапе компиляции). constexpr if ОБЯЗАН отрабатывать в compile-time, т.к., например, в выкидываемой ветке может оказаться вызов несуществующего метода или какие другие конструкции которые не то, что вычислить в рантайме нельзя, но и просто скомпилировать код с ними.
>>855426
#492 #855426
>>855419
Я вообще не читал коммент про constexpr if(а просто увидел кейворд и решил набросить о том, как оно работает) но один хуй это чуть расширенная версия ifdef без задач.

Конкретно наброс такой: constexpr, если ему дать не константу просто молчаливо отработает в рантайме, без ошибки и нихуя => юзабельно пока проект пишет 1 человек (и без таймскипов).

Хотя в плюсах вообще все через такой вот анус реализовано, чему удивляться.
>>855433>>855519
#493 #855433
>>855426

>пок-пок ни как в Ди, ко-ко-ко


>добавляют compile-time if из D


>пок-пок говно без задач, ну хватит уже переусложнять, коко


Вся суть
>>855441
#494 #855441
>>855433
При чём тут это мертворожденное говно вообще, поехавший? Нахуя вообще статическая типизации и прочее кококо, если по прежнему нужно искать подобные детские косяки в рантайме?
>>855498
#495 #855498
>>855441

>При чём тут это мертворожденное говно вообще, поехавший?


Ну так скажи где сделано нормально.

>>855441

>Нахуя вообще статическая типизации и прочее кококо, если по прежнему нужно искать подобные детские косяки в рантайме?


Вот есть например const методы у классов. Они гарантируют что метод не изменяют состояние объекта к которому применены. Однако, их можно вызвать и для не константного объекта. Т.е. const условно говоря означает что методу хватает для работы и константного объекта. Примерно такая же аналогия работает и для constexpr функций. Модификатор означает что функции "хватит для работы" и компайл-тайма. Это не значит что она будет работать исключительно в компайлтайм, точно также константные методы могут применяться и для неконстантных объектов. Все по аналогии.
Однако для constexpr функций у компилятора шире возможности по оптимизации кода. Если для const функций компилятор зна Кроме того, можно использовать constexpr вычисления в качестве параметров шаблона или в качестве размерности массива, что раньше можно было достаточно геморно.

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


Так дай ему constexpr константу, даун тупой, будет тебе ошибка.
>>855509
#496 #855501
>>855233
ПК не работает без процессора.
#497 #855509
>>855498

>Так дай ему constexpr константу, даун тупой, будет тебе ошибка.


Что ты за хуйню написал?

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


Костыль моего костыля - мне вообще не костыль?

>Однако для constexpr функций у компилятора шире возможности по оптимизации кода


Чем же они отличаются для рантаймового constexpr от const? Занитриговал.

>Ну так скажи где сделано нормально.


В любом диалекте лиспа. Только это вообще не язык, а строительный материал это другие языки, с другими требованиями, и тащить породию на подобный функционал в, блядь, плюсы да и ещё с такой реализацией - веселуха полная.

Кстати, пока знающий шизоид в треде - почему в 11-х плюсах constexpr настолько кастрированные? Причём совсем до сумашествия - тот же тернарный оператор вместо if else.
#498 #855519
>>855426

> один хуй это чуть расширенная версия ifdef без задач.


Гениев (буду политкорректен) полон тред...

На этапе препроцессинга у тебя нифига кроме токенов нет, а на этапе constexpr if есть доступ к информации о типах, можешь type traits использовать на полную катушку.
>>855556
Optical character recognition #499 #855553
Подскажите, какие существуют открытые библиотеки для распознавания текста с изображений с возможностью подключения в С++? Помимо OpenCV и TesseractOCR
#500 #855556
>>855519
Раньше точно так же мог с шаблонными костылями, лол, гений.
>>855563
#501 #855563
>>855556
Для того и ввели constexpr if, чтобы было удобнее, чем с шаблонными костылями. Об этом в proposal написано.

Но местные гении proposal-ов не читают, а предпочитают изображать капитана К.О.
#502 #855943
Задание написать функцию, суммирующую все аргументы. Темплейт, варьируемое количество аргументов. http://ideone.com/jv4Li9 не накостылял ли я? Три typename'а смущают, хотя и по-другому, вроде бы, никак.
>>856006>>856080
#503 #856006
>>855943
http://ideone.com/jIDu1b
Так лучше, по-моему, тут вывод типов общий, если ты решищь запихать float или double вместе с впереди идущими целочисленными, значения не обкастрируются
>>856309
24 Кб, 756x197
sage #504 #856080
>>855943
http://en.cppreference.com/w/cpp/language/fold
на пикрел почти то, что нужно (не знаю, зачем они обозвали sum то, что им не является)
>>856082>>856309
#505 #856082
>>856080
Це-ж 17, шо ты!
>>856084
sage #506 #856084
>>856082
Удивит препода и одноклассников.
#507 #856309
>>856006
Так у меня, вроде, тоже ничего не кастрируется. Ведь при операциях над разными типами оно само к "наивысшему" приводит, если не указано другого.

>>856080
Что-то я не понял, что это и как связано с моей задачей. И фраза

>an operator with precedence below cast at the top level


Оператор находится на топ левеле и его приоритет ниже каста или приоритет оператора ниже "каста на топ левеле"? И что вообще под топ левелом подразумевается, та часть выражения, которая вне всех скобок?
>>856312
#508 #856312
>>856309

>> Так у меня, вроде, тоже ничего не кастрируется. Ведь при операциях над разными типами оно само к "наивысшему" приводит, если не указано другого.



У тебя на выходе получается в любом случае long double вне зависимости от типов, поданных на вход. Если ты передашь два char'а, скажем, он сначала их сложит, а потом сконвертирует в long double, что само по себе уже затраты. Само по себе такое сложение двух целых чисел не даст существенного снижения производительности, но когда ты начнешь складывать уже три целых числа, то у тебя вторым шагом будут складываться два long double, что, само по себе, очень затратная операция (относительно сложения целых чисел).
>>856317
#509 #856317
>>856312

>У тебя на выходе получается в любом случае long double вне зависимости от типов


А, так это по условию так надо. Получается, самый оптимальный и отвечающий условиям вариант это функции с args... возвращать common_type, а в функции с одним аргументом — long double, так?
>>856318
#510 #856318
>>856317
Смотря на то, что ты желаешь получить на выходе. Если ты желаешь выхлоп в виде long double, то можно не париться с выводом общего типа, если хочешь, чтобы было быстрее, делай вывод общего типа для аргументов.
Если ты делаешь суммирование одного значения, то используй тип аргумента как тип возвращаемого значения.
>>856379
#511 #856379
>>856318
Отлично, спасибо.
27 Кб, 480x360
#512 #856597
>>840964 (OP)
Крестаны, хелп.
Есть QQuickWindow, как определить, когда оно частично или полностью закрыто другими окнами? visibility подходит только для свёрнутого окна. Попробовал со стороны window() подцепиться к exposeEvent, но isExposed() всегда (кроме сворачивания) выдаёт true, соснулей.
>>856659
#513 #856659
>>856597
Qt::WindowFlags flags = mainWindow.windowFlags();
mainWindow.setWindowFlags(flags | Qt::WindowStaysOnTopHint);
>>856869
#514 #856681
Что за флаг -l ? -lGL -lGLEW, например. Это ведь хэдеры, которые (у меня) в /usr/include лежат. Почему нельзя написать -I/usr/include ? И чем определяется имя библиотеки? Почему GL, а не OPENGL?
>>856707>>856725
#515 #856707
>>856681
С ПОДКЛЮЧЕНИЕМ, ДОРОГОЙ! ПОПРОБУЙ СПРОСИТЬ НА ФОРУМЕ GOOGLE.COM
>>856726
#516 #856725
>>856681
Петух сраный. Больше не заходи сюда.
>>856726
#517 #856726
>>856725
>>856707
почему бы тебе самому не съебаться?
#518 #856869
>>856659
Но это же хуевый костыль.
Я так понимаю, без дрочева с винапи для получения всех окон, сравнивания позиций вручную, описанную проблему не решить.
#519 #857026
Выбивает heap corruption detected after normal block в чем может быть проблема ?
http://pastebin.com/RUhdduse
>>857059>>857062
#520 #857059
>>857026
Дохуя в чём.
==12073== Memcheck, a memory error detector
==12073== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==12073== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==12073== Command: ./govno
==12073==
==12073== Invalid write of size 8
==12073== at 0x400A69: main (govno.cpp:12)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid write of size 4
==12073== at 0x400ADD: main (govno.cpp:15)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400AA0: main (govno.cpp:15)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400B31: main (govno.cpp:18)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400B80: main (govno.cpp:19)
==12073== Address 0x5ab5d40 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid write of size 4
==12073== at 0x400B8D: main (govno.cpp:19)
==12073== Address 0x5ab5d40 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400B21: main (govno.cpp:18)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400B4B: main (govno.cpp:19)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400B70: main (govno.cpp:19)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400BDF: main (govno.cpp:23)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
-33-36-271-43
1-36-4201
-121-40-9-13
==12073== Invalid read of size 8
==12073== at 0x400BCF: main (govno.cpp:23)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
111-221

==12073== Invalid read of size 8
==12073== at 0x400C71: main (govno.cpp:37)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400C9B: main (govno.cpp:38)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400C81: main (govno.cpp:37)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400CAB: main (govno.cpp:38)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid write of size 8
==12073== at 0x400CDC: main (govno.cpp:39)
==12073== Address 0x5ab6280 is 0 bytes after a block of size 32 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400C2D: main (govno.cpp:29)
==12073==
-45-72-109-31
==12073== Invalid read of size 8
==12073== at 0x400D7F: main (govno.cpp:48)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400D9B: main (govno.cpp:48)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073==
==12073== HEAP SUMMARY:
==12073== in use at exit: 72,704 bytes in 1 blocks
==12073== total heap usage: 8 allocs, 7 frees, 73,848 bytes allocated
==12073==
==12073== LEAK SUMMARY:
==12073== definitely lost: 0 bytes in 0 blocks
==12073== indirectly lost: 0 bytes in 0 blocks
==12073== possibly lost: 0 bytes in 0 blocks
==12073== still reachable: 72,704 bytes in 1 blocks
==12073== suppressed: 0 bytes in 0 blocks
==12073== Rerun with --leak-check=full to see details of leaked memory
==12073==
==12073== For counts of detected and suppressed errors, rerun with: -v
==12073== ERROR SUMMARY: 58 errors from 18 contexts (suppressed: 0 from 0)
#520 #857059
>>857026
Дохуя в чём.
==12073== Memcheck, a memory error detector
==12073== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==12073== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==12073== Command: ./govno
==12073==
==12073== Invalid write of size 8
==12073== at 0x400A69: main (govno.cpp:12)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid write of size 4
==12073== at 0x400ADD: main (govno.cpp:15)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400AA0: main (govno.cpp:15)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400B31: main (govno.cpp:18)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400B80: main (govno.cpp:19)
==12073== Address 0x5ab5d40 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid write of size 4
==12073== at 0x400B8D: main (govno.cpp:19)
==12073== Address 0x5ab5d40 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400B21: main (govno.cpp:18)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400B4B: main (govno.cpp:19)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400B70: main (govno.cpp:19)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400BDF: main (govno.cpp:23)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
-33-36-271-43
1-36-4201
-121-40-9-13
==12073== Invalid read of size 8
==12073== at 0x400BCF: main (govno.cpp:23)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
111-221

==12073== Invalid read of size 8
==12073== at 0x400C71: main (govno.cpp:37)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400C9B: main (govno.cpp:38)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400C81: main (govno.cpp:37)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid read of size 4
==12073== at 0x400CAB: main (govno.cpp:38)
==12073== Address 0x5ab5cf0 is 0 bytes after a block of size 16 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A68: main (govno.cpp:12)
==12073==
==12073== Invalid write of size 8
==12073== at 0x400CDC: main (govno.cpp:39)
==12073== Address 0x5ab6280 is 0 bytes after a block of size 32 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400C2D: main (govno.cpp:29)
==12073==
-45-72-109-31
==12073== Invalid read of size 8
==12073== at 0x400D7F: main (govno.cpp:48)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073== Invalid read of size 8
==12073== at 0x400D9B: main (govno.cpp:48)
==12073== Address 0x5ab5c98 is 0 bytes after a block of size 24 alloc'd
==12073== at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12073== by 0x400A38: main (govno.cpp:10)
==12073==
==12073==
==12073== HEAP SUMMARY:
==12073== in use at exit: 72,704 bytes in 1 blocks
==12073== total heap usage: 8 allocs, 7 frees, 73,848 bytes allocated
==12073==
==12073== LEAK SUMMARY:
==12073== definitely lost: 0 bytes in 0 blocks
==12073== indirectly lost: 0 bytes in 0 blocks
==12073== possibly lost: 0 bytes in 0 blocks
==12073== still reachable: 72,704 bytes in 1 blocks
==12073== suppressed: 0 bytes in 0 blocks
==12073== Rerun with --leak-check=full to see details of leaked memory
==12073==
==12073== For counts of detected and suppressed errors, rerun with: -v
==12073== ERROR SUMMARY: 58 errors from 18 contexts (suppressed: 0 from 0)
>>857075
#521 #857062
>>857026
Если словами, а не логом: ты везде лезешь за границы выделенной памяти.
>>857063
#522 #857063
>>857062
Спасибо
#523 #857075
>>857059

>> ==12073== Command: ./govno


У меня были сомнения по этому коду и ты их подтвердил
>>857093
#524 #857093
>>857075
Да ничего там ужасного нет, кроме индексации за пределами массивов.
234 Кб, 1920x1080
#525 #857179
>>840964 (OP)

>Анончик молю ,помоги пожалуйста!!



Постpоить класс для pаботы с многочленами. Класс должен включать соответствующие поля: порядок, набор коэффициентов.
Класс должен обеспечивать пpостейшие функции для pаботы с данными классами: вычисление значения многочлена для данного параметра, вывод многочлена в удобной форме и т.д.
>>857181
#526 #857181
>>857179
>>840964 (OP)

>Памятка ньюфагу


>


>Вопросы по синтаксису идут на хуй


>Лабы идут на хуй


Читать умеешь, говно?
>>857184
#527 #857184
>>857181
создать тредик?
>>857185
#529 #857396
нуфаня
шин10
установил куте
не могу открыть новый проект, пишет то что сборщика нет.
Что делать то?(переустановлю qt скину скрины)
>>857398>>857419
#530 #857398
>>857396
пишет: Необходимо в настройках комплекта задать компилятор для сборки.
#531 #857419
>>857396
Чего блять?
Ти MinGW или MSVC хотя бы выкачал для этого дела?
>>857552
#532 #857552
>>857419
да всё, спасибо, разобрался. msvс криво встал как то, переустановил и всё норм стало. Теперь бы разобраться как делать кросскомпиляцию.
77 Кб, 1366x768
29 Кб, 1143x202
Microsoft использует clang/llvm внутри компилятора? #533 #857587
Смотрю тут cppconчиту 2016. Преодолев отвращение, решил глянуть на доклад "Latest and Greatest from the Visual Studio Family for C++ Developers".

У них охуенный прогресс: в 2016-м году они узнали об SSA и теперь их компилятор выдаёт не совсем говнокод. См. пик. 1. Кстати, откуда берутся сперманьки, которые вопят, что компилятор от MS самый лучший? Стоит только глянуть на результаты старого оптимизатора, как понимаешь,что все восхвалятели MSVC — ебанутые.

Ладно. Решил я глянуть, а что же там выдаёт шланг. Смотрим на пик. 2.
Но погодите!!! Это ведь почти тот же код, что сейчас выдаёт студия! Разница ECX и EDI из-за разных calling conventions. В MSABI первый аргумент идёт в RCX, в SYSVABI — в RDI. Ну и разница в LEA. rcx*2 против rdi+rdi. Скорее всего MS проходятся по асму peephole-обфускатором и делают замену второго на первое, чтобы никто не догадался о заимствованиях.

Вот так вот. Предупреждали вас, господа llvm-щики, что заигрывание с пермиссивными лицензиями добром не кончится. Спиздят ваш код и спасибо не скажут.

Видимо, так оно и вышло.
#535 #857744
>>857605
Ты куда нас перекатить пытаешься, хитрец?
>>857745
#536 #857745
>>857744
Туда, где вам всем и место.
#537 #859270
//Кто-нибудь может объяснить, что значит строчка int& y = x;????????????????????????????

#include <iostream>
#include <locale.h>
#include <conio.h>

using namespace std;

void main (void)
{

int x;
cin >>x;
int& y = x;
int z = y;
cout << y;

_getch();
}
>>859316>>859804
#538 #859316
>>859270
http://www.cprogramming.com/tutorial/references.html
Грубо говоря, ярлык для другой переменной.
>>859321>>861545
#539 #859321
>>859316
Хотя, не, ярлык не самое верное слово, это больше для ссылки подошло бы, ну да пофиг, прочитаешь на той странице.
>>859357
sage #540 #859357
>>859321

>это больше для ссылки подошло б


А это не ссылка, что ли?
>>859443
#541 #859443
>>859357
Это не ссылка на x, скажем так.
32 Кб, 553x421
#542 #859457
http://pastebin.com/dWg1Njc9

Есть инжектор функции в память процесса, и четыре функции, которые я пытаюсь заинжектить. Проблема в том, что инжект каждой из них происходит успешно, но приводит к крашу приложения.
В чем тут проблема, почему даже пустая функция крашит все?
>>859522>>859809
#543 #859522
>>859457
Стек поди ломается
>>859712
#544 #859712
>>859522
Как он ломается? Что я в коде неправильно написал?
>>859774
#545 #859774
>>859712
Например,
void zeroFWithRet() {
__asm RET
}
скомпилируется примерно в следующее при выключенных оптимизациях:
push rbp
mov rbp, rsp
ret
pop rbp
ret
>>859790
145 Кб, 1920x1080
#546 #859790
>>859774
Почему тогда

void zeroF() {
__asm {
}
}

Тоже крашит, там же будет

push rbp
mov rbp, rsp
pop rbp
ret

Скрин дампа
#547 #859804
>>859270
Фактически, это то же самое, что и указатель, только константный (если ты сослался единожды на какой-то объект, то уже не можешь сменить место, на которое ты ссылаешься). Естественно, применение ссылок не освобождает от выстрелов в ногу.
Ссылка:

>> int a = 10; int b = 20;


>> int &x = a; // единожды взяв ссылку ты остаешься с ней навеки


>> x = b; // записывает в переменную a значение из переменной b


То же самое, только в виде указателя:

>> int a = 10; int b = 20;


>> int const x = &a;


>> x = b;

#548 #859805
>>859804
во втором примере:

>> int a = 10; int b = 20;


>> int const ЗДЕЗДОЩКА x = &a;


>> ЗВЕЗДОЩКА x = b;

>>859900
#549 #859809
>>859457
250 -- что за магическое число?
>>859869
sage #550 #859863
>>859804

>Фактически, это то же самое, что и указатель


Лол.
>>859892
#551 #859869
>>859809
Олдскул. Статья старая. Записать все что есть.
Конечно, изменить нужно, но думаю ключевая проблема не в этом
>>860471
#552 #859892
>>859863
http://pastebin.com/UqdV80N7
Хуй знает, с чего ты там проиграл. Оптимизацию, естественно, не включал, потому что это бы потерло все к чертям.
>>859916
#553 #859900
>>859804
>>859805
константу не туда припер, извиняюси, после звездощки надо
175 Кб, 500x480
sage #554 #859916
>>859892

> ассемблерный высер вместо пунктов стандарта


Да все знаю, как реализуются ссылки.
Вопрос в том, что с ТЗ языка это не указатели.
>>859936
#555 #859936
>>859916
Ну так я и написал, что фактически, естественно, синтаксис и правила там немного другие. Различий у них, как в структуры и класса.
>>859971
sage #556 #859971
>>859936
Пиздеть-то завязывай.
368 Кб, 1337x827
#558 #860212
Меня скорее всего пошлют нахуй, но попытать счастья стоит. Можно матрицу заполнить рандомными числами? Чтобы указывать только столбцы, строки и вектор. Пробовал вставлять разные штуки в разные места, компилятор или не работает или работает странно.
sage #559 #860241
>>860212

> Пробовал вставлять разные штуки в разные места


Боюсь представить что и куда ты себе вставлял.
>>860318
sage #560 #860246
>>860212
Попробуй выпить спрайта.
>>860317
#561 #860317
>>860246
не помогло
#562 #860318
>>860241
сё так.

Скачал книжки которые предоставил ОП. Может смогу написать код заново.
#563 #860454
Посоветуйте пожалуйста, где можно почитать (ну или посмотреть) на русском о cmake, чтоб понятно и доступно.
В ангельский тоже можно само собой, но родной язык приятнее.
>>861230
#564 #860471
>>859869
то есть, то, что ты можешь выходить за границы отведённой тебе памяти тебя не коробит?
>>860484
#565 #860484
>>860471
511 выделено, по 250 записано, в чем проблема?
#566 #860528
>>860212
в этом дерьме даже разбираться не хочется
#567 #860809
На степике есть курс по С++ goo.gl/CxhzOj стоит время тратить или лучше с Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ вкатиться?
>>860812
sage #568 #860812
>>860809
Если ты чего-то не понимаешь, то да, стоит читать все, что только можно
>>860813
#569 #860813
>>860812
Спасибо. Добра тебе!
#570 #861230
>>860454
На гитхабе проекты смотри, или еще где, там, в принципе, все понятно будет со временем. Непонятная инструкция - в мануал, вот так я разбирался. Если уже в файлы пилить (например, мне надо было qt.conf формировать), то уже в документацию, потому что там, как правило, такое не часто используется.
Ну и флаги компилятора надо бы знать.
>>861234
#571 #861234
>>861230
Да у меня и в проектах компании хватает проектов на cmake, понятно, что можно смотреть всё непонятное (95%) в мануале, но можно же и поискать вариант поудобнее вкатиться. Видимо не судьба.
#572 #861357
Бамп
#573 #861545
>>859804
>>859316
>>859316
СПС БРАТЮНИ
#574 #861607
Посоны, а что за указатели такие? Никак не пойму что это такое и зачем нужно. По-братски объясните. Если чё, работаю грузчиком дверей, решил стать программистом.
>>861752
#576 #861766
>>861752
Чтоб тебе так по-братски помогали, чертила.
>>861790
test #577 #861773
[code]
int main()

{
std:: cout << "Hello, world!";
return 0;
}
[/code]
#578 #861775
[code int a(0);] aaaa [/code]
12 Кб, 480x360
#579 #861790
>>861766
Не брат ты мне, гнида черножопая
4 Кб, 267x173
4 Кб, 405x124
#580 #862062
Не могу понять, почему сначала происходит a = a*b,
ведь совмещенные операторы имеют одинаковый приоритет и ПРАВОАССОЦИАТИВНЫ
>>862082
#581 #862082
>>862062
Чему равно (2 + 2) * 2?
#582 #862181
Хочу вкатиться в многопоточность.
Посоветуйте книг\мануалов по этому поводу.
>>862876
#583 #862277
Кресты требуют знания матана?
>>862428
#584 #862428
>>862277
Для обработки изображений, машинного обучения и еще много чего, но, в целом, можно и без него жить.
#585 #862485
Няши, не уверен, что мне в этот тред, но всё равно ничего ближе не нашел. Собственно, проблема: изучаю QT и соответственно плюсы неплохо знаю ObjC, но надоело писать по иос. Суть в том, что мне нужно сделать всплывающее окно, но не по нажатию на кнопку, а из кода. В гугле ничего не нашел, все вызывают по кнопке, а как это сделать я и так знаю.
>>862514
#586 #862514
>>862485
http://doc.qt.io/qt-5/qmessagebox.html
Если я тебя правильно понял.

Например диалог yes/no будет как:
QMessageBox::question(nullptr, tr("C++ faggs"), tr("Are you fagg?"));
>>862521
#587 #862521
>>862514
Не совсем то, нет. Суть в том, что мне нужно не диалоговое окно, а окно поверх основного, типа QWidget. В него уже надо запихнуть браузер через webView.
>>863270
#588 #862528
В общем реквестирую какой-нибудь не очень большой материал для повторения по С++. Потому как 2 года до этого писал на С++, сейчас пишу на Objective-C(пришлось временно перейти из-за нехватки проектов, а потом на работе С++ отдел развалился) и хочу перейти на другую работу чтобы писать на С++. И каждый раз на собеседованиях сталкваюсь с проблемами связанными с тем что на С++ давно не писал и то не помню как инициализировать char * строки и какая библиотека нужна чтобы использовать функции strcpy и strlen, то не помню как определять шаблоны, то не помню как определять операторы. Нет, начни я кодить - сразу бы загуглил, но вот с ходу вспомнить не всегда могу.
>>863272
#589 #862712
Мне интересно когда создаёшь массивы объектов, методы классов тоже занимают память прямо пропорционально количеству объектов, или создаётся по одному методу на всех?
>>862755
#590 #862755
>>862712
Медоты все в текстовом сегменте лежат. Если виртуальных функций нет, тогда оверхеда не будет, если есть - будет, но только на таблицу переходов.
#591 #862876
>>862181
Могу посоветовать не читать книгу из ОП-поста (Уильямса). Говно какое-то. Ни толком кода, ни хотя бы тривиальнейших задач или идей для задач — всё самому придумывать надо; никакого объяснениz о том, зачем вообще то или иное сделано, про промисы даже код не полный и не сказано, что запускать это всё нужно вручную отдельным тредом, да и нахуй они вообще нужны тоже (сначала вообще может показаться как просто лишний код: например, http://en.cppreference.com/w/cpp/thread/future просто future в одну строку, а с промисом мы сначала создаём промис, а потом достаём из него тот же future).
Про атомарные типы глава вообще тыковка: лишь спустя 17 страниц описания и использования операций над атомарными типами, принимающими упорядочение доступа к памяти (memory_order_xxx) и активного выделения этого аргумента, что тут принимает то и это, в таком-то случае такие-то виды доступа недоступны, а тут по-дефолту такой, наконец доходит до описания, что это вообще такое.
Да и в общем иногда попадаются какие-то громоздкие и корявые предложения (вот прямо как два моих предыдущих), прочитав которые в голове крутится только "что, блядь?" и желание перечитать. Не знаю, проблема ли это автора или перевода (отмажусь сразу: как ленивая мразь просто скачал по ссылке из шапки, а там русик оказался).
Впрочем, сравнить мне не с чем, может они все такие.
>>865895
5 Кб, 456x212
#592 #862880
Почему я не вижу отображения этого выражения,
по идее же if(-1) должно иметь значение true
>>862884
#593 #862884
>>862880
Какого выражения? У тебя не выражения после if'а, тебе даже ошибка об этом говорит.
>>862886
#594 #862886
>>862884
ну в принципе ладно, я просто хотел убедиться, что if будет тру, но сейчас я и так это понял.
#595 #862971
Вопрос по многопоточности, собственно по книге этого Уильямса.

В разговоре об атомиках и памяти, там есть такой код - http://ideone.com/s9msQ7
И говорится, что при порядке доступа memory_order_relaxed, assertion этот может иногда и выкинуть, потому что нет никакой гарантии, что функция
void write_x_then_y(){
x.store(true, memory_order_relaxed);
y.store(true, memory_order_relaxed);
}

запишет сначала x, а потом y, вполне может и наоборот.
Заставить свой компилятор так сделать у меня ен получилось, поэтому, собственно, вопрос:
А если между записью вставить чтение x'а, то есть
x.store(true, memory_order_relaxed);
int z = x.load();
y.store(true, memory_order_relaxed);

как сделано там же в функции write_x_read_y_write_y, гарантирует ли это запись y после x'а, или и тут assert может не пройтись?
#596 #863270
>>862521
Что-то сложно тебя понять. Но если я тебя правильно понял, то тебе надо просто в своём окне сделать QWidget или QFrame, в качестве родителя запихнуть в него это своё главное окно и указать флаг setWindowFlags(Qt::Popup).
#597 #863272
>>862528

>какая библиотека нужна чтобы использовать функции strcpy и strlen


Пиздец днищевопрос от долбоёба какого-то.
#598 #863424
Как сделать таймер в C++? То есть ставишь значени в 50 сек и функция исполняется эти 50 сек.
Изучал std::chrono, дошло не сразу что это не то. Это не обратные отсчет, а секундомер. То есть он может посчитать промежуток только когда программа отметила конец промежутка, ну и соответственно цикл таким образом не сделаешь.
>>863426>>863477
#599 #863426
>>863424

> Изучал std::chrono


Блядь, хули там изучать можно?
>>863428
#600 #863428
>>863426
Хроно разве имеет такую возможность, лалка?
Разве отрезок имеет какую-либо другую функцию, кроме как now()?
#602 #863484
>>863477
Уже загуглил похожие советы, но спасибо огромное за ответ.
#603 #863556
Чем измерять время из плюсов с точностью до микросекунд?
clock_gettime из time.h и CPU'шный таймер дают время вроде до наносекунд, но при этом почему-то время всё равно меняется большими шагами и реальная точность около миллисекунды получается.
Или я что-нибудь делаю не так?
>>863737
sage #604 #863737
>>863556

> Или я что-нибудь делаю не так?


Да, ты хочешь функционала ОС реального времени от ОС общего назначения.
#605 #864049
Щас бы перекатик
>>864350
#606 #864350
>>864049
После принятия стандарта.
#607 #864467
Почему такой ебанутый синтаксис?
Почему когда я перегружаю оператор "круглые скобки" функцией от 1 аргумента, иногда приходится писать kek(x), а иногда kek()(x)?
286 Кб, 1024x769
#608 #864645
Сап, программисты. Есть один вопрос:
Имеется декартова система координат и какая-то нарисованная функция на ней. Предположим синус х.
Нужно перейти от декартовой системы к эллиптической.

ВТФ?
Все рисуется с помощью мувту, лайнту.
Имеется формула перехода, но что-то все это запилить в плюсах не получается. Так же в наличии два аргумента posX, posY определяющие соответственно Х и У.
Собственно вопрос и заключается в том, как нарисовать элементарный график с переходом в эти координаты
>>864660
#609 #864660
>>864645
Возьми какой-нибудь FLTK и рисуй там, примеров навалом.
>>865071
41 Кб, 640x640
#610 #864858
>>840964 (OP)
Здарова, петуханы, есть sqlite3 бд, нужен орм под неё, чтоб умел классы генерировать прям по схеме бд из файлика со связями, методами и всякой малафьей. Существует такой?
Я нагуглил QxOrm, у него есть QxEntityEditor, который пидор требует лицензии за сотни долларов или там ограничение на 5 таблиц. А мне 200 таблиц нужно, пиздец короче.
31 Кб, 677x342
#611 #864887
Не хочет решаться

// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "iostream"
#include "Math.h"
#include "iomanip"
using namespace std;

int _tmain(int argc, _TCHAR argv[])
{
double b;
double x, y, z;
cout << "x=";
cin >> x ;
cout << "\n";
cout << "y=";
cin >> y ;
cout << "\n";
cout << "z=";
cin >> z;
cout << "\n";
b = 1 +( pow(z, 2) / (abs(3 - y) + (pow(z, 2) / 5))) + pow(1 / 3, (x - 5
y)) + exp(2*x - y);
cout << setprecision(2) << "b=" << b;
system("Pause");
return 0;
}
31 Кб, 677x342
#611 #864887
Не хочет решаться

// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include "iostream"
#include "Math.h"
#include "iomanip"
using namespace std;

int _tmain(int argc, _TCHAR argv[])
{
double b;
double x, y, z;
cout << "x=";
cin >> x ;
cout << "\n";
cout << "y=";
cin >> y ;
cout << "\n";
cout << "z=";
cin >> z;
cout << "\n";
b = 1 +( pow(z, 2) / (abs(3 - y) + (pow(z, 2) / 5))) + pow(1 / 3, (x - 5
y)) + exp(2*x - y);
cout << setprecision(2) << "b=" << b;
system("Pause");
return 0;
}
>>864921
#612 #864921
>>864887

>Лабы идут на хуй

#613 #865071
>>864660
нужно именно через мувту лайнту нарисовать. в этом и проблема
#614 #865255
Как в Qt Creator сделать так, чтобы таб представлялся в виде таба, а не 4-8 (указанных в настройках) пробелах, я заебался стирать их при необходимости вручную.
>>865562
#615 #865562
>>865255
shift+tab не работает?
#616 #865622
Есть убунта и я хочу вкатиться в с++. На чем писать код и чем помпилировать? Слышал про gcc и g++: они нормальные?
Скачал вторую из шапки книгу: Стэнли Липпман, Жози Лажойе и Барбара... - она подойдет для новичка, если я собираюсь программировать на линуксе. Могу я из-под прыщей кодить программы для виндоуса?
>>865623
#617 #865623
>>865622
Точно, первый опыт хелоувордов был на в10 с вс, поэтому я не понимаю, как писать в блокноте, чтобы потом в отдельном компиляторе скомпилировать программу.
#618 #865717
Создал в дезигнере QVBoxLayout, в который динамично добавляю несколько QHBoxLayout-ов, в которых по две кнопки. Как теперь эти QHBoxLayout-ы удалять? Всегда что-то остается на заднем фоне.

Оба варианта не работают, если что.
http://pastebin.com/9ji2LSet
#619 #865895
>>862876
Просто не читай на русском.
>>865964
#620 #865964
>>865895
К языку там лишь одна претензия, тащемта.

Вообще, вероятно, я просто рано её начал и она не для въезжающих в параллелизм. С другой стороны, там многое прямо вот с нуля и даже мне было лениво читать подробнейшие описания. Как-то под всех сразу попытались, видимо, подстроиться, чтобы читатель сам пропускал то, что сложно/известно/скучно.
>>865967
#621 #865967
>>865964

> не для въезжающих в параллелизм.


Да. Она про средства и модель памяти C++.
>>865971
#622 #865971
>>865967
Там лишь одна глава про это целенаправленно. Но там ведь и про треды всякие тоже с нуля говорится, так что я вообще не знаю, странная книга. Вообще, вроде и понятно всё, лишь практики маловато, как мне кажется.
За целую главу (~50 страниц) разбирают пример одного thread-safe стэка и и и всё. Как справочник не поиспользуешь — длинно. За одно прочтение всё это не запомнится, только какие-то отрывки (тоже полезные, разумеется) останутся. А материалов для закрепления и отрабатывания нет. Как-то так, что ли.
#623 #866368
http://ideone.com/wq8IIW
Где ошибка?
#624 #866391
>>866368
Инициализируй константу m вне описания класса.
http://ideone.com/9LURLp
>>866406
#625 #866406
>>866391
А мне обязательно надо внутри класса. И статическую
>>866432
#626 #866432
>>866406
Статическая инициализируется при запуске программы, ЕМНИП, и, в общем, я не сделал ее нестатической.
В объявлении класса разрешается инициализировать (только char, int и им подобные целочисленные типы, в том числе и беззнаковые), но, например double или сложные типы (скажем, std::vector) запрещено.
>>866436>>866450
#627 #866436
>>866432
А что мне делать если я этот класс буду инклюдом подключать? Эту инизиализацию каждый раз заново делать?
#628 #866439
>>866436
Выдели отдельный файл исходника для инициализации статических констант/переменных да и все.
#629 #866450
>>866432

>> В объявлении класса можно инициализировать литеральные типы (LiteralType), но только с constexpr или интегральные без обязательного его применения, естественно начиная с C++11, если стандарт уебищный (то, что вышло до c++11), то придется довольствоваться инициализацией только интегральных типов, как я и написал ранее.


Фикс
К слову, о плюсах constexpr
#631 #866538
>>866436
>>866368
Вроде для этого inline-переменные завезли в C++17. Чтобы можно было инициализировать их в хедере.
>>866545
#632 #866545
>>866436
>>866368
>>866538
Впрочем, с -std=c++1z оно и так работает.
#633 #866580
Господа, помогите. Пишу в Qt 5.6, использую библиотеку для отображения оффлайн карты https://github.com/raptorswing/MapGraphics
Подскажите, как реализовать в ней геолокацию ?
#634 #866662
Тред утонул или удален.
Это копия, сохраненная 6 ноября 2016 года.

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

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