Вместо шапки - https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/Прошлый - >>970816 (OP) (OP)Теги: кресты, cpp
Есть кто в QT шарит? Есть две формы и два класса, mainwindow.ui и settingswondow.ui. Как их связать лучше? В MainWindow добавить поле-указатель и делать в конструкторе new SettingsWindow и посылать ему сигнал в слот show() когда нажата кнопка настроек? Это то что первое в голову пришло, может в Qt другая практика применяется.А для хранения настроек насколько я понял есть QSettings, который хранит их на диске пока приложение закрыто.
>>979789Возможно настройки лучше сделать из QDialog, и создавать и показывть его при нажатии кнопки, он будет блокировать основное окно.А QSetting под виндой вообще хранит все в реестре, гораздо удобнее.
>>979476 (OP)Может кто пояснить, как работать с функциями? Суть в том, что нужно настроить микроконтроллер следующим образом:Есть четыре кнопки и 2х16 мониторчик. Надо вывести в первую строку название подменю, а во вторую - какое-то число, которое будет символизировать какой-то параметр настройки. Нажал ввод - вошло в функцию, можно выбирать кнопками "влево" и "вправо" параметр. Нажал отмену - вышел в главное меню, кнопками "влево" и "вправо" выбираешь подменю. Ну, например:В меню три пункта: Звук, надпись выводимая, время очистки экрана. Нужно выбрать, в какой пункт зайти и выбрать там нужное значение. После выбора нужных значений контроллер начинает выдавать выбранный звук, надпись и через заданное время очищает экран. Скажу прямо: я студент, но не программист, хотя предмет такой есть. Преподу делал много программ, но такую хуйню один потянуть не могу, а он не хочет объяснять, как реализовать это. Я пришел к выводу, что надо к каждому пункту задать функцию, где в ходе выбора будет задано какое-то значение переменной, которая должна выводиться в void main и выполняться. Но я не понимаю, как, во-первых, ссылаться на функции и как из них выходить в ту часть текста, где была оставлена ссылка на эту функцию. А во-вторых, не понимаю, каким образом мне реализовать выполнение программой действий, которые могут быть выбраны совершенно в рандомном порядке. Ну, то есть, мелодия может быть третьей, надпись первой, а время очистки экрана - 3 секунды. Или наоборот - единицы и одна тройка. Или как угодно. Надеяться мне больше не на кого.
>>980094Подходя к вопросу в лоб ты ничего хорошего не на микроконтролишь. И, судя по всему, ты себе довольно сложные задачи берешь для баловства с МК и изучения С - начинай с попроще чего-то.Как наводка - гугли "Машина Состояний" (FSM), встретишь простые реализации, и от этого начинай фантазировать.Если же требуется просто задачу решить а не учиться - то есть готовые либы для подобной задачи - на Хабре видел, ищи.
>>980104Такую задачу поставил препод. Сделать подменю я могу, а вот несколько, да еще и с переключением, и с запоминанием результата - уже никак.Поищу на Хабре тогда. Спасибо.
>>980094> В меню три пункта: Звук, надпись выводимая, время очистки экрана.> Ну, то есть, мелодия может быть третьей, надпись первой, а время очистки экрана - 3 секунды. Или наоборот - единицы и одна тройка. Или как угодно. Неясно, надписи уже заданы и ты просто выбираешь номер надписи и что?
НУБОВОПРОСЫДвач, решил переписать часть прилаги на крестах и соснул невидимого и неосязаемого, только разобрался с new и delete, как stl-контейнеры:http://cpp.sh/2bvp4Вопросы:1) Почему когда я кладуinsert() что-то в set, у этого чего-то вызывается деструктор?2) Почему иногда деструктор вызывается больше раз, чем был вызван конструктор, при этом this указывает на другую область памяти?3) Как правильно создавать объекты, которые я хочу положить в set? Через new и потом разыменовывать?
>>980094что за МК юзаешь?сам хочу попробовать
>>980246Ты не можешь вставить в контейнер объект который создан на стеке. Вставляй указатель либо используй emplace вместо insert.
>>980268>Ты не можешь вставить в контейнер объект который создан на стеке.Может переместить temporary. Но он создал дестрактор, что отменило генерацию мув-констракторов.
>>979986Вот ещё не понял: есть окно настроек, есть чекбоксы в менюбаре, может ещё что-то, в общем по всему приложению настройки могут измениться. Как это синхронизировать с QSettings? Делать глобальный класс настроек, который будут дёргать другие классы, а он в деструкторе скинет всё в QSettings?Получается какая-то хуита:connect(checkbox, &QAction::toggled, settings, &Settings::change())потом в слотеname = qobject_cast<QAction *>(QObject::sender())->text()зато всё взаимодействие с настройками находится в одном классе
В /b никого нет, поэтомуКто тут может объяснить, какого хуя наследники дружественных классов автоматически также не становятЬся дружественными?
>>980273каталог-кун пишет:современое ООП:толпы быдла долбятся головами об стену невидя двери - для них выпиливают люк.
>>980164Надписи уже заданы. Но это по большому счету не важно.
>>980251На проце PIC18F4520. Саму плату назвать не могу сейчас.
>>980272У тебя все экземпляры сеттингов завязаны на одни и те же данные, ничего синхронизировать не надо, просто пиши и используй переменные где хочешь:QCoreApplication::setOrganizationName("TestName");QCoreApplication::setOrganizationDomain("TestDomain.ru");QCoreApplication::setApplicationName("TestApp");QSettings set1, set2;set1.setValue("Var1",777);std::cout << set2.value("Var1").toInt(); // 777
>>979476 (OP)Мне нужно написать на Qt widget, имеющий древовидную структуру и поддерживающий несколько типов данных (для начала булевые, числа, строки, но потом будет что-то еще). Нужно что бы разные типы данных по разному представлялись визуально в этом дереве, т.е. булевый параметр представлял собой QCheckBox и т.д. Визуально это должно напоминать сам Qt редактор, а именно область настроек виджета. На какие классы обратить внимание? Я примерно представляю как такое сделать, но вангую, что мой способ это кал ебаный, наверное есть уже специальные классы под это дело. Подскажите, кто знает.
>>979476 (OP)Куда делся ОП, который стихи писал? Сколько раз уже спрашивал - никто так и не ответил. Или это запретная тема?
Сап. Есть ли какие-нибудь гайды по распараллеливанию для чайников? Желательно что-нибудь попроще с копипасте-макросами и общими рекомендациями, никакой многопроцессорности и инлайн-вставок не нужно, просто хочу чтобы всё чуть быстрее работало.
>>980534> гайды по распараллеливанию для чайниковКончилось время, когда программирование было для чайников. Теперь пока не разберёшься досконально в модели памяти плюсов, можно даже не надеяться. Короче, быдло отсеяно из индустрии.
http://ideone.com/GSZNT3Ананасы, что означает строчка с new(space){t}; ? Зачем там скобки, не пойму.
>>980644placement new
>>980648спасибо.
>>979789Вот блин, в QDialog кнопка apply никаких сигналов не выдаёт, только QDialog::accepted после нажатия ok или cancel, придётся кучу костылей городить чтобы на кнопку apply сигнал повесить и применять изменения настроек на лету.
>>980563Толсто
>>980684>Толсто А ты прогнись и расслабься - и совсем не толсто будет :3
Аноны посовейте кто-нибудь тему для дипломной работы, желательно такую которая реализуема лишь на С/С++
>>980812>которая реализуема лишь на С/С++Segfault
>>980686Послушай совета бывалого человека
>>979476 (OP)ОП-пик сегфолтнулся?
Ещё проблема с Qt. QTabWidget при нажатии крестика на вкладке посылает столько сигналов tabCloseRequested(int index), сколько всего есть вкладок. То есть например есть 4 вкладки, закрываем первую - получаем 4 сигнала tabCloseRequested(0) и закрываем все вкладки, потому что их индекс поочерёдно меняется на 0.Пробовал ставить локер:connect(tabs_widget, &QTabWidget::tabCloseRequested, this, &closeTab);void closeTab(index) {if(_closing_tab) return;else_closing_tab = true; // Блокируем функциюtabs_widget->removeTab(index); // Удаляем вкладку_closing_tab = false; // Разблокируем функцию}Но он не помогает, removeTab() работает асинхронно и функция всё равно исполняется несколько раз при закрытии одной вкладки.Что вообще можно сделать с этим? Почему QTabWidget посылает один и тот же сигнал несколько раз?
>>980867Нашёл методом тыка:disconnect(tabs_widget, &QTabWidget::tabCloseRequested, this, &closeTab);tabs_widget->removeTab(index);connect(tabs_widget, &QTabWidget::tabCloseRequested, this, &closeTab);но такое решение не внушает уверенности
Ну вообщем на андроиде из коробки в Qt openssl нету. Это значит что все твои https коннекты невозможны и вообще куча шифрования недоступно.Нашел решение - нужно привязать отдельно openssl либу в проект. На сайте qt конечно же не сказано какая версия, откуда качать и как интегрировать в проект. Естественно, готовую либу и хедеры скачать нельзя - её тупо не дистрибутируют для андроида.Знач надо билдить из сорсов. Хорошо, смазка у меня заготовлена, кляп в рот и пагнал.Качаю сорсы, нашел гайд по компиляции либы на сайте openssl. Делаю всё по гайду ХУЯК НЕ КОМПИЛИТСЯ ОШИБКА 0000000A. Ну че епта, гуглим ошибку, неправильная версия питона у тебя такая-то, а надо другая. Ну бля хуле ставим питон. Бля забыл зарегать его снова в гугл бля как это сделать нахуй, виден только старый питон. Нашел, зарегал, ахуеннно. Чето даже начало компилиться, целых 2 минуты компилилось ВЫЛЕЗЛА ошибка 0000000B. Блядь ну пощади меня сучара, что на этот раз. Лезу в гугл.Оказывается, самая новая версия openssl 1.0.7.4.3.3.0.t не компилится под Android, надо только версию до 1.0.4.6.7.5.b. Блядь а где скачать? На сайте только новая и устаревшая 0.98. Ну блядь лезу ищу по всем сайтам где скачать такую-то версию. Нашел фтпшник со всеми релизами. Качаю.Распаковал, заново начинаю компилировать. Прошло 10 минут УРА БЛЯДЬ скопилировалось, БЕЗ ОШИБОК. Стоп а куда скомпилировалось? БлЯЯЯЯЯДЬ. Оно скоплилило либу к динамическим сошкам и привязала линки на конкретную папку (то есть чтобы либа заработала, надо будет на андроид закинуть в /usr/lib эту хуйню). Ну еб твою мать мне просто нужны openssl.so без линков нахуй. Лезу в гугол. Че? Надо makefile поменять? Очищаю всё, распаковываю, меняю makefile по гайду. Жду три минуты, не компилится с ошибкой 000000000C. Лезу в гугл, ошибка известная, все кроют хуями разрабом и предлагают свои варики, нахожу гайд 4х летней давности с совсем другой последовательностью компиляции либы. Для компиляции надо скачать специальный скрипт, качаю с сайта требующим реги.НУ ЩАС ТО ВСЁ ТОЧНО БЛЯДЬ ЗАРАБОТАЕТ!Удаляю опять к хуям всё, распаковываю, компилирую. БЛЯДЬ опять забыл makefile поменять, пиздец.Меняю makefile, компилирую. УРА, на выходе ва файлика - openssl.so libcrypto.so, как я и хотел епта. Линкую в Qt Creator. Он мне жалуется при компиляции, что неправильная архитектура. Ебать мой хуй, а че я скомпилил? Ну блядь канеш для x86, а на андроиде arm. Ну хуле лезу в makefile, вроде все переменные указал правильно - путь до SDK, архитектуру и тд. Вывожу на всякий случай на экран - нихуя make эти переменные не видит и юзает дефолтный конфиг. Ок, не буду гуглить и ебаться, просто захардкодю их внутрь configurate скрипта.Запускаю и УРА блядь готовы отличьненькие либы мои милые вде сошки. Линкую в проект, всё компилится, ПИЗДЕЦ НУ АХУЕТЬ. Деплою на устройтсво, запускаю приложуху. Вылетает при старте. ЭЭ бля че за нах. Читаю logcat: library Qt-libcrypto not found, library openssl not found. И краш, потому что либы не найти.Как так в чем проблема?Лезу в гугл, проблема действительно есть, дело в том, что хоть ты и сбилдил openssl статически, но всё равно там внутри прописывается версии либ, и твоя либа имеет название например openssl.so.5. А Андроид такие либы с точками линковать не умеет, потому что у них имя необычное. Одно из решений - открыть либы librypto и openssl и изменить все упоминания openssl.so.5 на openssl_5.so (например, убрать точку короче лишнюю, точный текст не скажу). Ну достаю из своего уже широкого ануса свой hex-редактор и начинаю пыхтеть над либами и искать че под замену. Раза с 3го у меня получилось всё верно и либы залинковались.Деплою на устройство - всё видит, всё запускается, https коннект есть, всё работает короче. Слава Украине, Смерть Москалям! Через день босс заходит недовольный - мой плеер чето не качает нихуя файлы с сервака. Я тестил на 4м и 5м андроде, а вот у него - новенький 6й нексус, и на нем нихуя не работает. Как так то?Оказывается вот конкретно вот эта версия openssl содержит баг, при котором не коннектится на 6й версии андроида (там чето внутри порезали в самой системе, внутри чето поменялось и openssl полетел к хуям).Ну качаю версию openssl с фиксом, и всё проделываю заново.Прошло еще 3 часа ебли с компиляцией, фиксами, патчами в hexредакторе и МОЯ либонька openssl готова. Пиздец. А сука жиробас напротив js-макакич, пукич, какич - тупо блядь всё имеет из коробки. И вот тут меня накрывает нахуй завистью. У красноглазого ублюдка который с этим сталкивается не первый раз наверное бы получилось всё быстрее, но на тот момент я вообще не был готов к такому повороту, пиздец.
>>980873Кулсторей
>>980873Сохранил даже
>>980873Я конечно не андоидщик, а js-боярин, но паста ахуенна.
>>980873Я тебе больше скажу - на андроиде вообще изкоробки ssl нету.
>>980873>0000000B>0000000AШта, ты сошки под андроид msvc компилил?
>>980873бля, жиза.
Есть простенький класс myString, хранящий в себе всего одну строку в качестве поля,я хочу перегрузить для него оператор << , чтобы выводить эту строку,сделал глобальную функцию перегрузки operator<< friend для этого класса, но какого-то хуя я всё равно не могу обращаться к privat полям этого класса в глобальной функциикомпилятор указывает на строку объявления глобальной функции в Global.h и выдает кучу ошибок, первая из которыхmissing type specifier - int assumed. Note: C++ does not support default-intкакого хера, я вообще не передаю туда int, я передаю туда свой пользовательский классhttps://pastebin.com/TcF7dxCkя реально не понимаю в чем дело, потому что я делаю всё в соответствии со всеми туториалами,
>>980951В хедерных объявлениях пиши полные имена типа (например std::ostream). И еще - не стоит использовать using namespace в хедерах.
>>980956убрал, но всё равно те же ошибки(хотя их стало не 22, а 5)в объявлении функцииstd::ostream& operator<<(std::ostream& os, const MyString& string);он выдает на каждый std::ostream&missing type specifier - int assumed. Note: C++ does not support default-intи соответственноsyntax error: missing ',' before '&'
Почему первый вариант работает правильно, а второй - не работает? Хотя оба нормально компилируется. в v10 - цифры от 0 до 9, перемешиваю массив
>>981048А, все, понял. Ступил немножко.
>>980975Используй компилятор C++ либо линкуй бинарник с libstdc++https://pastebin.com/bjFdaGja
В чем проблема?? Суть: создать двухмерный массив и умножить на число.#include<iostream> using namespace std; int main(){ int i,j,n,m; cout<<" n="; cin>>n; cout<<" m="; cin>>m; int a=new int [n]; for(i=0;i<n;i++) a=new int [m]; cout<<"\n Enter elements:\n"; for(i=0;i<n;i++) for(j=0;j<m;j++) cin>>a[j]; cout<<"\n Result;\n"; for(i=0;i<n;i++) { for(j=0;j<m;j++) cout<<a[j]<<" "; cout<<endl; } int s = 3; cout<<"\n Result;\n"; for(i=0;i<n;i++) { for(j=0;j<m;j++) a[j] = s; cout<<a[j]<<" "; cout<<endl; } system("pause");}
>>980975Покажи весь изменённый код.
>>981125#include<iostream> using namespace std; int main(){ int i,j,n,m; cout<<" n="; cin>>n; cout<<" m="; cin>>m; int a=new int [n]; for(i=0;i<n;i++) a=new int [m]; cout<<"\n Enter elements:\n"; for(i=0;i<n;i++) for(j=0;j<m;j++) cin>>a[j]; cout<<"\n Result;\n"; for(i=0;i<n;i++) { for(j=0;j<m;j++) cout<<a[j]<<" "; cout<<endl; } int s = 3; cout<<"\n Result;\n"; for(i=0;i<n;i++) { for(j=0;j<m;j++) a[j] = s; cout<<a[j]<<" "; cout<<endl; } system("pause");}
Как создать тему без оп-пика?
>>981157ОП-пик снесли, не знаю почему.Возможно, вместе с предыдущим неудачным перекатом. В этой теме и предыдущей был один пик.
>>980975Попробуй так: https://pastebin.com/KNffk3wVНо я сам ньюфаг с дивана. Только не забудь еще прописать определения для конструкторов в файле MyString.cpp.
>>980975А вообще не стоит использовать имена переменным, которые уже есть в стандартной библиотеке, типа string. Так что я бы написал что-то типа такого: https://pastebin.com/ZAbjiPB6Ньюфаг-кун >>981179
Аноны-крестовики, дайте ссылок на всякие разные простые, но качественные проекты, где может разобраться и ньюфаг, как я, чтобы почитать, как профессионалы пишут на С++, а то заебало писать говнокод, который я даже сам понимаю, что он говно.
>>981244Легко https://github.com/theanonym/libyoba-perl
>>980951В твоем коде ошибок нет https://ideone.com/e9V6fC ты где-то в другом месте обосрался.
>>980975https://pastebin.com/igQXunvCМой говнокод, студия15 пропустила. Добавлю свои 5 копеек.
А у меня сейчас QtCreator крашнулся при остановке дебаггера. И тут сегфолт, вот это номер!
Поцоны а какую IDE выбрать?Clion vs MS Studio 15 Community vs Kdevelop(yoba.jpg)
>>981412Clion или студия с решарпером. Только студия что без него, что тем более с ним будет куда тормознутее, так что выбор очевиден.
>>981412Clion жрёт дохуя оперативы
>>981438Студия тожА kdevelop:а) На шинде утрахаешься;б) Не умеет нихуя, даже с цланговским парсером.
>>981412У CLion нет отладчика для MSVC тулчейна, только MinGW.В студию можно подключить решурпер но будет работать как CLion, хотя, я бы сказал, даже чуть шустрее. У решарпера конченые code templates (которые у всех называются сниппетами, в которых из коробки функционала нихуя почти нет и придется писать свои (не шаблончики, а именно модули для решарпера). В студии быстрее показываются подсказки по подстановке символов, в то время как у CLion'а у тебя сначала вывалятся куча дефайнов, которые тебе нахуй не нужны, а потом через 0.5 секунд что-то действительно необходимое.CLion криво парсит названия проектов (если, например у тебя в одном проекте несколько подпроектов, то, создавая хедеры, там будет генерироваться ifndef-guard с названием корневого проекта, жутко бесит блять). У CLion-а есть жесткие косяки с парсингом шаблонов, то есть красные линии будут вылазить там, где ты их не ждешь вообще, хотя собираться это будет даже без предупреждений. В CLion можно делать автоматический перенос выражений и слов, даже комментарии будет переносить, хотя вот например бинарные выражения он переносит пиздец как весело, сделав, например, сделав из этого:bool my_flag = (mask & MT_1) || (mask & MT_2) && (var_b == var_c);вот эту хуйню:bool my_flag = (mask & MT_1) || (mask &MT_2) && (var_b == var_c); То есть, перенос он есть, но семантика хотя и неизменна, становится плохочитаемой.В то время, как в вижуал студии нихуя переноса нет, более того, нет и никогда не было ограничительной линии, поэтому щелкать будешь сам (хотя вот недавно появилось расширение, чтобы добавить вот эту самую линию без заебов, хотя переноса слов можешь и не ожидать вообще).В CLion можно настроить кодировку файлов по-умолчанию, а вот в MSVC этот ебыч будет тебе постоянно прописывать системную кодировку (а какая же она у нас там, не CP-1251 случаем?!), в других редакторах будут ёба-символы вместо кириллицы.В CLion ты видишь файловую структуру проекта (хотя есть и другие виды, но они мне нахуй не нужны), в то время как студия при создании нового файла серит ими в одну кучу, получается такое месиво в проекте.В CLion есть семантическая подсветка переменных, которая нахуй никому не уперлась. От дополнительных цветов режет глаза только. Для студии дохуища аддонов, и, как ни странно, поддержка того же CMake в плагине для студии сделана более кошерно, чем в CLion (мало того, что там все в кучу одного цвета, как в болоте, так и переменные он нихуя не подсказывает), да и многие плагины по-лучше, чем в CLion. В CLion больше настроек форматирования текста (спасибо IntelliJ Idea), когда студия со своими полутора настройками скобочек будет постоянно твои лямбда-функции опускать на пару отступов вниз.У CLion, не смотря на то, что богаче настройки форматирования текста, достаточно кривой format-on-type (не придумаю так быстро русичного названия этой штуке).У CLion дохуя багов, которые правиться будут не скоро, зато поддержка тестов зачем-то пилится активнее всего (нахуя?!)Поддержка тулчейна MSVC в CLion кривая (забавно то, что он не может найти тип size_t. SIZE_T ЕБ ТВОЮ МАТЬ!)
Как в кт сделать такую маленькую кнопку сброса? В стандартных темах вроде нет. Это отдельный ресурс используется?
>>980534Бамп
>>981552Ищи гайды по OpenMP, хули ты как дурак-то. Там все на препроцессорных вставках как раз и делается.
>>981555Все гайды сводятся к "вот сюда вот напишите #pragma omp parallel, а перед циклами можно писать #pragma omp for. А теперь, смотрите как ОГОГО, ЁБАНЫ В РОТ, printf("Hello, world!\n") ВЫВОДИТСЯ В 50 ПОТОКОВ!!!" Организацию данных, потокобезопасность - что это вообще, кому нужно? - нихуя нигде ни одного слова нет, ебитесь как хотите. Как я мапы и векторы в распараллеленом цикле менять то буду, ёпта, как данные модифицировать?! Чё, совсем мудак что ли, покажи мне, как я буду контейнеры в многопотоке использовать, ёпта!
Подскажите профайлер для крестов под прыщи. Пытаюсь использовать gprof, но он, сука, нихуя не выводит вообще, с какими бы флагами я не компилил.
>>981579#pragma omp criticalвам что-нибудь говорит? Прекрасная конструкция. Аллах акбар!
>>980821На оп-пике было петросянство, которое не понравилось моду (скрин из стрима Outlast с крестами).Ебал.
>>980094>а он не хочет объяснять, как реализовать это. С вертушки въеби ему, это ненормальный препод.>>9802461) Потому что вставляется копия, а временное значение разрушается.2) Потому что в строке 34 течёт память - ты создаёшь объект, который никогда не разрушится, так как ты проебал указатель на него.3) insert(L()) нормально, ещё можно emplace(). В чём разница:insert(L(zalupa));emplace(zalupa).С emplace может быть быстрее.
Два треда назад я тоже обосрался, кстати, и тогда я тоже запости второй тред с той же картинкой, но тогда картинка осталась на месте (мод спал и не удалил?).
>>9816062) сказано верно, но к проблеме не относится.Что такое "this указывает на другую область памяти" - я не понял.
Анончик помогай. Прошёл курс молодого программиста на http://academy.cppstudio.com/. Куда двигатся дальше?Есть вроде страничка с литературой https://proglib.io/p/cpp-books/ . Но я хз куда там лезть. В начальный, средний или продвинутый уровень? Не хочется заного читать то что уже знаю, посоветуйте плиз
>>981642> Куда двигатся дальше?
>>981642Не ебу, но подозреваю, что тебе нужна "Лучшая практика" из начального уровня и далее.
>>981749Двачая
>>981412>а какую IDE выбратьemacs
Нужно затереть рандомные сектора на флешке. Причём сделать это нужно так, чтобы дата изменения файлов не изменилась. Как это сделать?
>>981642А дальше - базовая архитектура компьютера, алгоритмы и структуры данных, без знания этих дисциплин ты просто обезьянаа с знанием этих дисциплин, ты обезьяна, которая их знает, но ты это поймешь только потом
Дайте простейший пример как поставить семафор чтобы только один тред имел доступ к участку кода (другие пускай морозятся), желательно на QT
Если завести массив указателей на (тип_нейм//класс_нейм), они автоматом инициализируются nullptr или останутся забиты мусором?
>>982191Конструктор по умолчанию.
>>982167Nahttp://doc.qt.io/qt-5/qtcore-threads-semaphores-example.html
>>982191А, массив указателей. В ideone 0.
Есть желающие разработать собственную IDE? Интерфейс и логика на Qt, модель кода (навигация, автодополнение, подсветка, рефакторинг) через clang api. Конфиги в json, для плагинов и сложной работы с тектом как в vim можно вставить интерпретатор скриптов. Я тут прикинул, что один буду полгода возиться с этим.
>>982245>Есть желающие разработать собственную IDE?Нет.Для сях есть куча годных ИДЕ.
>>982191В функции - мусором, если не напишешь "= {}".C++ не делает того, о чём его не просят. Ибо скорость. Исключение - глобальные переменные. Цена инициализации нулевая, так что в этом случае инициализация будет. У Майерса про это даже видео есть.
>>982143Хуйня какая-то. Читай про FAT.>>982223В ideone undefined behaviour.
>>982249> глобальные переменные. Цена инициализации нулеваяhttp://ideone.com/HbzDdv
>>982248Не так уж много и у каждой свои недостатки. Сейчас единственный способ сделать всё под себя это писать плагины для вима или емакса, предварительно потратив полгода на то чтобы освоиться в редакторе, и в результате эти скрипты всё равно будут работать медленно.Либо сделать свою IDE, шуструю и с красивым гуем на Qt, но один человек здесь не справится.
>>982293Людям не понятна твоя мотивация. Даже если ты объяснишь нормально, то не факт, что с тобой согласятся.
>>982293Проблема в том, что уже есть кдевелоп и кутикреэйтор, которые тоже на Qt и используют цланговский парсер. Чем тебя не устраивает вариант настроить их под себя или написать у ним плагины?
>>982293>и в результате эти скрипты всё равно будут работать медленноВ емаксе режимы для крестов - это обертка к тому же clang-у.>предварительно потратив полгода на то чтобы освоиться в редакторе>Либо сделать свою IDEПотратив минимум пару лет
>>979476 (OP)Аноны, поясните, в чем смысл делать assert(this) в конструкторе класса?
>>982245>полгода чет кекТак и пиши, не осилил емакс, памагите написать иде
>>982341https://www.viva64.com/ru/b/0226/
>>982245> Есть желающие разработать собственную IDE? Интерфейс и логика на QtНет, только если интерфейс полностью на нативных компонентах Windows.
>>981357Eclipse
>>982348> Пока даже самые новые версии распространенных компиляторов (можно проверить с помощью сервиса GCC Explorer) не выполняют таких оптимизаций, так что пока "все работает", правда же?Уже выполняют.
Есть шаблонный метод(хочу сделать что-то типо фабрики), который принимает два аргумента - тип класса и инициализирующее значение. В теле стоит свитч на тип класса, и в зависимости от типа, я создаю объект с переданным в функцию значением:(Yoba1 принимает char в конструкторе, а Yoba2 - int, например)Yoba foo(int type, T val) {switch(type) {case 0 : return new Yoba1(val);case 1 : return new Yoba2(val);...}Но компилятор посылает меня нахуй сообщением, что не может найти соответствующий конструктор. Поиск такой ошибки можно как-то отложить на рантайм, ведь я сам себе гарантирую, что буду передавать только корректные аргументы.
>>982431Где-то ты темнишь.
>>982431Ну если кратко, то ты не можешь этот момент отложить. Да и в каком языке ты сможешь?
Как упоротому сишнику быстро перекатиться в крестовики? Что читать? И чтобы были расписаны все нюансы STL.
>>982293Посмотрим, как ты будешь парсер кода писать. Вот тут то ты обосрешься в первый раз.Посмотрим, как ты будешь тефакторинг писать, тут то ты и обосрешься во второй раз.Посмотрим, как ты будешь нарсер систем сборки писать, тут то ты обосрешься в третий раз.Неожиданно, но тут уже полные штаны говна. несите следующие ...
>>982431Можешь попробовать конструктор на шаблонах сделать, перегружать готовые, в стандартном бросать исключение или ещё чё делать. http://ideone.com/eD69WYНо мне кажется, что это просто очередное место, где можно поиметь проблем и решение несколько неадекватное. Я бы постарался такого не делать оправдываю себя за говнокод ITT
>>982261Мы о POD говорим. У любого объявленного класса вызывается конструктор, в твоём посте нет смысла.>>982352Куты можно настроить для использования нативных элементов, ЕМНИП.>>982438Во многих языках с динамической типизацией.>>982443Я сам только на сях писал, потом начал медленно писать программу под свои нужды, и многое узнал во время гугления и чтения cppreference.com, но это было небыстро.>>982431>Но компилятор посылает меня нахуй сообщением, что не может найти соответствующий конструктор.1) Какие аргументы ты передаёшь в foo?2) У тебя не может быть ошибка типизации в функции. В C++17 завезли if constexpr, в его ветвях могут быть ошибки, и инт типа нужно будет в аргументы тимплейта пихнуть.А без (2) можно только тимплейты плодить.http://ideone.com/qhaNjs - ошибки начнутся только тогда, когда ты вызовешь foo с таким типом, который несовместим хотя бы с одной версией Ёбы.
Олсо, пихни Ёбу в тимплейт, и сделай версию Ёбы аргументом оного.
Как можно просканировать строку из букв и заменить в ней некие буквы?
>>982520В СТЛ такого нет. Цикл со свитчем.
>>982529>со свитчем. Дебил уровня /зк as is.
>>982534Мне виднее.
>>982520http://www.cplusplus.com/reference/regex/regex_replace/
>>982562>>982529Все, спасибо. Я уже сам додумался и запилил.
>>982364Дело не столько в оптимизациях, сколько в том, что это UB. А всё, что вызывает UB, нужно обходить за триллион километров. UB - это самый серьёзный косяк, хуже, чем любая ошибка компиляции, чем любая неверно вбитая формула. Нужно всегда держать в голове: "Если я пишу код, который может привести к UB, то руки мне отрубить надо".
>>982483>Во многих языках с динамической типизацией.Я сам не особо знаком с такими языками, даже JS не трогал толком. Можно пример кода, где упоминается конструктор класса, которого не существует, и этот код работал?
>>982538Угомонись, дегенерат.
>>982581Код не будет работать, но выполнится до того места.
>>982591Ну анон говорил, что оно просто не дойдёт до того места. Этот конструктор "лишний"
2ch, можно ли как-то посмотреть что компилятор автоматически генерирует для классов?
>>982596Весь код инстанциированного тимплейта компилируется. Он не скомпилируется потому, что анализ программы - не задача компилятора.Пример языка, в котором всё ок: PHP. Динамическая типизация, тип переменной может быть любой, соседние невыполняемые строки кода не проверяются.Это элементарное отличие динамической типизации от статической.>>982653Гугли default constructors/destructors. Больше компилятор ничего не генерирует (не считая тимплейты функций, в которые передавался класс).
Поясните за LLVM на Windows.Скачал релиз (4), установил, но почему-то нет кучи тулз, памятных мне по llvm какой-то старой ветки (3.4 кажется), LLC, LLI, llvm-dis и многих других). Что-то изменилось или на винду это все не завезли? Тогда (году в 2014) я качал какие-то билды с гитхаба, вроде официального на тот момент не было.
>>982678Быть может, они отдельно?
>>982685А где?
>>982674Copy/move assignment
>>982158С базовой архитектурой всё ок. Читал с 4-8 классы хуеву гору книг по микроархитектуре ЭВМ, немного знаю ассемблер.Как смочь в качественную алгоритмизацию если у меня школы 9 классов и в математику я можно сказать не могу совсем? Придётся учить матан?
Всем инклуде. Поясните за Qt. Где лучше скачать и где вычитать про настройку и использование? Нетбук не сможет в VS, нормально ли будет с Qt?Мне только пилить проги уровня "жмякнул кнопку - вылезла картинка"
>>982806Можно и без VS, в Qt Creator-е сразуНа офф. сайте все есть
Посоветуйте хороший компилятор для ньюфагаВ ньюфаготреде посоветовали Visual Studio, какая версия лучше?
>>982868g++ бери. В VS своя версия компилятора, ещё привыкнешь. из IDE Clion норм
Есть какой-то учебник, в котором описаны фичи из с++11/14?
>>982882https://github.com/AnthonyCalandra/modern-cpp-features
>>982890Очень годно. Прям то, что искал. Спасибо.
Где можно почитать подробно про компиляцию, связывание, вот это вот всё. А то я вроде пишу довольно долго уже в IDE и не представляю вообще что там как происходит.
>>982868>>982900Тебе ответили уже.>какая версия лучшеНикакая версия не лучше. Разница лишь в том, что чем позднее версия - тем больше фич он поддерживает.Так как ты будешь там запускать только хеллоуворлды - можешь скачивать любой компилятор любой версии.
>>982902Ахо, Ульман: Компиляторы>>982868Есть IDE и есть компилятор. Компилятор нужен не для редактирования кода, IDE нужна не для компилирования.Visual Studio - это IDE с компилятором. Я считаю, что в ней слишком много кнопок для ньюфага.Идеальный вариант - ideone. НИЧЕГО лишнего, ошибки подсвечиваются после попытки компиляции.Ещё можно Qt Creator поставить, в нём интерфейс минималистичный.
>>982945ideone.com т.е.
>>982945>ideoneДо первой ньюфажей ошибки. Тогда такой перец идёт в этот тред/форум или таки учится пользоваться дебаггером в своей IDE.
>>982945>Ахо, Ульман: КомпиляторыТолсто.
unknown override specifierкак исправить эту ошибку,она выскакивает на 2х классах, в которые содержат вложенные классы (в том числе 1 из них вложен в другой)с чем вообще связана эта ошибка?
>>982978Чо толсто-то? Можно просто пропустить главы от лексического анализа до модулей, дальше там описано,
>>983012Либо код, либо сам ищи циклические зависимости.
>>983024Да я уже нашел, всё из-за сраных заголовочных файлов - в одном подключил один, потом туда же подключил другой, где первый уже подключен и так получается два раза подключение,нигде нормального гайда не нашел как их подключать, чтобы не запутаться и что б всё работало
>>983035pragma once блет
>>983039а вот нихуя~она там стояла везде где надо
>>983061вроде не все компиляторы ее поддерживают. может у тебя версия старая? пиши #ifndef HEADER #define HEADER
Есть класс с полями - одно из них - указатель на некий массив, другие поля - например числовых типов. При вызове деструктора требуется удалить тот массив, что по указателю. Надо ли вдобавок к этому писать код для удаления полей самого объекта этого класса, или эту часть компилятор сам сгенерирует?
>>983675Как ты собрался удалять статические поля?
>>983688Ну в смысле если объект был создан в динамической памяти, он работу по удалению его самого без дополнительных указаний сделает?
>>983713Нет.На каждый new делай delete, вот и всё.
Анон, страуса и уильямса осилил, полистал мейерса - очевидно. Думаю углубиться в буст, но глаза разбегаются от количества либ, с какой стороны к нему подойти?
Сиплюсач, подскажи пожалуйста: Как можно осуществить вывод двух и более связанных таблиц в один DataGridView в Visual C++? БД - Access.Искал - по плюсам ничего не нахожу, по шарпу информации как говна. Пытался переписывать код с шарпа - ничего. Плюс еще надо в коллекции и коломсы прописывать связанные таблицы, а я хз что куда. Подскажите пожалуйста, родные, последняя надежда. Первый пик - моя прога. Второй - то как это выглядит в моей голове и как должно будет быть. взято тут sernam(точка)ru/book_cbd.php?id=43
>>983675shared_ptr<kokoko>(new kokoko(kukarek))В наше время delete пишут только праздникам и только.
>>983836Ну не знаю. Я лично в компьютерной графике вообще не юзаю никакие фичи. Код представляет из себя си с классами + std и иногда штуки из с++11, типа unsigned long long.
>>983675А нафига тебе указатель на массив? Возьми просто std::vector, он сам удалит содержимое.Если уж очень нужно динамически распределять память, заюзай std::unique_ptr\std::shared_ptr, они сами будут удалять содержимое при вызове их деструктора.
>>983724Лол, 2017 год на дворе, если что. make_unique\make_shared и не нужны никакие delete.
>>983849Держи всех в курсе. Писать голые new и delete (не в конструкторах и деструкторах) в 2017 - зашквар зашкварыч.
>>983867>зашкварЕсли ты с пацанами крутой современный стартап мутишь, где никакая высокопроизводительность не нужна, то можешь смело обёртками оборачивать другие обёртки.Не вижу ничего плохого в том, чтобы использовать new/delete.
>>983888Мне очень не нравится эта тенденция, когда тупое говно типа тебя все новое, что им влом учить объявляет выдумками неких хипстеров, а ты-то олдскульный пацан, пишешь высокопроизводительный код, как деды завещали.Только хипстеров этих зовут Страуструп и Саттер. На, читай, https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r11-avoid-calling-new-and-delete-explicitly и просвещайся.Я миллион раз эту хуйню слышал от динозавров за 30, которые просто слишком тупы, чтобы выучить что-то новое и пишут как деды завещали. Нет ничего хуже вот этой отстаиваемой тупости.Все эти обертки инлайнятся и никакого влияния на производительность не дают. Есть просто тупые говнюки, которые вместо того, чтобы почитать последние статьи Страуструпа (вот уж стартаперы бугогого, самое время вставить шуточки про хипстеров и старбакспротив РЕАЛЬНЫХ ПАЦАНОВ типа тебя - мудака, ну да, куда Саттеру и Страуструпу до тебя), а есть люди, которые знают свой инструмент и как им пользоваться. Если ты думаешь, что голые указатели производительнее RAII-контейнеров, то ты тупой мудак, не знающий свой инструмент. А если ты так не думаешь, но все равно лепишь new и delete, то ты просто тупой мудак. Вот и все.
>>983888Ну если стартап, который умрет в говнокоде, не дойдя до продакшена, то может быть. Память, сука такая, олдскульно течет.А еще, когда мне говорят о производительности, я спрашиваю, а как ты профилируешь? Средний кодер оптимизирует хуже среднего компилятора.
>>983730Бамп
>>983867Так а разве он не о конструкторах и деструкторах говорит?Я вот лично тестировал std::shared_ptr и собственную реализацию подсчёта ссылок с new и delete this. Мой вариант в полтора раза быстрее.
>>984164Ну можешь предъявлять мелкомягким и получать оффер, ды.
Все видели этот прикол?https://twitter.com/sebrose/status/858347156427636738
Господа, подскажите, пожалуйста, следующую вещь.У меня имеется 2 массива.Первый состоит из некоторого количества элементов определенного типа, допустим int. ArrayInt<int>Второй является набором указателей на тип int, и каждый из его элементов хранит указатель на некий элемент первого массива. ArrayPInt<int>В функцию вида void funcName(int & ref); передается некое значение с помощью второго массива, выглядит это так:funcName (ArrayPInt);, где i равен индексу заведомо существующего элемента массиваВопрос состоит в следующем, будет ли это работать, если я хочу с помощью функции funcName изменять значения элементов исходного массива?Спрашиваю потому что не очень понимаю, что происходит при разыменовании указателя, значение копируется в новый раздел памяти или я получаю доступ к исходному значению? И если я не получаю доступ к исходному, то можно ли как-то запихнуть в функцию, в которую передается реф переменная пихнуть эту переменную из указателя?
>>984175а в самом важном-то сделал ошибку.вот так правильно:ArrayPInt<int*>
>>984171А смысл? Различные решения, которые используются в shared_ptr, вполне имеют смысл. Стандарт обязывает его удовлетворять определённым требованиям. Если я в свою реализацию добавлю эти совершенно ненужные мне требования, думаю, я сильно отстану по скорости.Но фишка-то в том, что тебе не всегда нужно то, что предлагает стандарт. А оверхед там просто огромный.
>>984176Это не ошибка, просто вакаба ест звёздочки.
>>984178и не только звездочки, лол, она мне еще съела вот что:funcName(*ArrPInt)
>>984180там [ i ] после ArrPIntКороче, главное вопрос, при разыменовании указателя с помощью звездочки смогу ли я получить доступ к тому значению и изменить именно его?
>>984175>что происходит при разыменовании указателя>>984181Результат разыменования — ссылка.
>>984182отлично! Если я правильно понял, то в таком случае у меня все должно работать. Спасибо!
>>984177Это хорошо, что вы всё понимаете. Всегда проще пользоваться стандартными решениями. В 99% случаев создание своего умного указателя не даст видимого ускорения.
>>984164А твой вариант поддерживает многопоточность, например? Я shared_ptr в принципе не очень люблю, но это не значит, что нужно бежать использовать голые new и delete в коде.
>>984192>В 99% случаев создание своего умного указателя не даст видимого ускорения.Очень даже даст. Потому что shared_prt мультитредовый, и это сильно сказывается на производительности.
>>984206Но разве я не прав про 99%?
>>984226В 99% случаев shared_ptr между тредами не передается.99% ресурсов имеют явного владельца, и shared_ptr не нужен.
https://pastebin.com/dxESjpyV1>------ Сборка начата: проект: B, Конфигурация: Release Any CPU ------B.vb(38,9): error BC36595: Метод не может одновременно содержать оператор "On Error Resume Next" и определение переменной, которая используется в лямбда-выражении или выражении запроса.========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========Что делать, аноны?
>>984250>Что делать, аноны?Учиться попадать в правильные треды?
>>984175Если в функцию передаешь как int& ref, то получаешь доступ к исходному значению и всегда его можешь поменять. Если же в функцию передаешь как const int& ref то код меняющий переданное просто не скомпилится.А вообще дизайн у тебя уж очень стремный, достаточно уменьшить размер первого массива и указатели в конце второго уже указывают в никуда.
>>984252Я в детдом попал.
>>984202Это ты про синхронизацию доступа? Но она мне не нужна, я никогда не пытаюсь получить доступ к подобным объектам из разных потоков. Я и не говорю, что моя реализация лучше стандартной, но в моём случае мне не нужны некоторые специфические фичи стандартного варианта, которые его замедляют.
>>984263Самая частая операция умного указателя - разыменование, и оно имеет нулевой оверхед. Если же ты делаешь множество копий своего говна, и при этом взятие мьютекса/инкремент-декремент атомика составляет большую часть операции копирования, а не непосредственно копирование, значит ты копируешь безумное множество мелких объектов и тебе не нужны указатели на счетчиках ссылок в принципе. Скорее всего имеет смысл копировать сами данные и использовать unique_ptr. Если же данные крупные, то взятие мьютекса в процентном отношении ничего не замедлит.Иными словами, там, где shared_ptr нужен, он хорош - особенно если использовать pool-аллокатор. А там, где он плох, счетчики ссылок не нужны.Вот типичный пациент, который наступил на все возможные грабли http://webcache.googleusercontent.com/search?q=cache:2vEXBHdabHkJ:love5an.livejournal.com/365174.html+&cd=1&hl=ru&ct=clnk&gl=ru&client=ubuntuК примеру, если у тебя есть иммутабельное AST с мелкими нодами и ты постоянно что-то там копируешь удаляешь, или же такой же граф, и ты за каким-то хуем пишешь такой код на С++, - пиши копирующий сборщик мусора. Производительность будет сумасшедшей, так как он в 99% случаев не будет отрабатывать. А указатели на счетчиках ссылок в любом случае будут сосать, даже если вырезать оттуда поддержку многопоточности.
>>984278>пиши копирующий сборщик мусораНахуя? Достаточно двух буферов/потоков. Из одного читаешь, в другой пишешь все дерево, потом их меняешь. Для батч-процессинга вообще глупо использовать умные указатели. Они нужны, например, для гуйни, там где данные мутабельные и персистентные. И на оверхед там насрать, потому что латенси и так миллисекунды.
>>984307Ты в общем-то и описал простейший сборщик мусора.В гуйне, как правило, есть дерево овнеров, чтобы не возникло циклических ссылок. Но вообще С++ для гуйни сильно на любителя, мелкий софт ушел в инет, а крупный софт типа КАД в любом случае легаси на легаси, и ты будешь делать так, как повелось в конкретной фирме.
>>984174интерфейсы ведь заменяют абстрактные классы и множественное наследование, не?
Может показаться странным мой вопрос, но ладно.У меня есть библиотечный класс. В нём есть поле float values[] , состоящее всегда из 3 элементов.И у меня есть класс Vector3, в котором есть 3 поля x,y,z. Можно как-то записать значения values[] из объекта первого класса в x,y,z объекта второго класса (кроме простого почленного присваивания, типа x = values[0], y=values[1]...)?Я не знаю, с помощью там какого-нибудь memcpy или как-то еще?
>>984389На этой картинке из твиттера тоже не совсем верно понимают, что такое интерфейс. Интерфейс - это совсем не абстрактный класс, нет. Интерфейс - это простое требование "класс обязан иметь такие-то методы".Знаю, на первый взгляд разница незаметна. Но она есть:- Абстрактный класс предполагает наличие таблицы виртуальных функций, т.е. все классы, которые от него наследуются, будут вызывать функции только через эту таблицу.- Интерфейс же ничего такого не предполагает. Если ты видишь где-то, что такой-то объект реализует такой-то интерфейс, значит, у него есть методы этого интерфейса. И вызов метода происходит как обычно, без всякого оверхеда.В C++ подобный функционал без оверхеда должен реализовываться через SFINAE, но никак не через абстрактные классы.
>>984408Используй почленное присваивание, остальное может не работать на железе с другим padding'ом у полей, например. А так, memcpy можно заменить union'ом. Но не надо. Даже если у тебя там 20 полей будет. В С++, к сожалению, нет средств избавиться от копипасты при итерации полей структуры метапрограммированием.
Я, конечно, очень сильно обнаглел, но как перевести строку в инт без атои(вижу точку аш в библиотеке, кудахчу про то, что пишу на плюсах а не на Си) и без подключение потоков стринговых. Должна ж быть просто какая-то функция.
Мне кажется или писать всю логику QMainWindow это странно? Может QApplication наследовать? Хочу оставить в основном окне только слоты и сигналы относящиеся к гую
>>984490>вижу точку аш в библиотеке, кудахчу про то, что пишу на плюсах а не на СиВыкини точку аш и добавь в начале букву эс как русская. h — это "эйч", быдлоВсё, теперь ты пишешь на C++.
>>984408Я бы порекомендовал std::copy , у него вполне может быть подходящая перегрузка, которая целиком через memcpy все скопипастит. Ну или вариант эту перегрузку самому написать.
>>984490http://en.cppreference.com/w/cpp/string/basic_string/stol
>>984493Ну знаешь же песенку. Аш - водородЦэ - углерод и так далее. Я вот как там произношу.
>>984253спасибо, и спасибо за критику.Идея состоит в том, что первый массив остается неизменным после создания (меняются только значения его элементов).Во втором массиве не обязательно содержатся указатели на все элементы первого, а лишь нужные в конкретный промежуток времени.Делается это для того, чтобы каждый раз при поиске нужного элемента не было необходимости целиком пробегать первый массив, а лишь необходимую выборку, на которую указывает второй массив.Может быть есть лучшие способы?
>>984490гугл, гугл мазарфакер, гуглить умеешь?http://en.cppreference.com/w/cpp/string/basic_string/stol
>>984493"эс" - это sc - это "си"
>>984682Я пародировал "аш", если кто не понял.
Народ, а почему многие main пишут на новой строке после int? Я что-то не нашёл этому логическое объяснение.
>>984600Это латынь
>>984008Мнение никогда не видевшего буст: не нужно в него углубляться, он огромен. Нужно искать в нём решения задач, с которыми не справляется STL.>>984164>Мой вариант в полтора раза быстрее.В коде, состоящем только из созданий и удалений?>>984408memcpy непортабл. Краткий ответ - нет.>>984965Ни разу в жизни не видел. Разве что для того, чтобы имя читалось быстрее (нахуя?).
>>984965параметры возвращаемые функции на одной строке, а имя на другой, так писали инженеры для облегчения поиска, пока в ит не вкатились всякие хипстеры пидарасы
>>984965Я такое видел в очень старом Си.Наверное годов 70ых.Сейчас такое даже и не встречал.
>>984965Кто все то, кто все то?! Мы тут одни с тобой епта.
>>984965Так вроде как проще грепать названия функций из исходников. Что-то в этом роде.
>>984986Ещё в 90-0х такой стиль активно использовался. А в оригинальном си вообще параметры под названием объявляли и тоже на новой строке ествественно
>>979476 (OP)подскажите какое приложение можно написать что бы значительно поднять скилл по плюсам, сам плюсы знаю плохо.
>>985060Компилятор, лол.
>>985068А какие фреймворки учить что бы устроится c++ погромистом.
>>985070https://github.com/fffaraz/awesome-cpp
>>985071благодарствую
class Parent {};class Base1 : public Parent {public: explicit Base1(const char c) : m_char(c) {}; const char m_char;};class Base2 : public Parent {public: explicit Base2(int c) : m_int(c) {}; int m_int;};class X {public:template<typename T>static Parent fabric(int t, T x) { switch (t) { case 0: return new Base1(x); default : return new Base2(x); }}};int main(int argc, char const argv[]){ Parent* p = X::fabric<int>(1, 3); delete p; return 0;}Компилятор генерирует ошибку, мол не нашел подходящего конструктора для Base1(нельзя конвертировать инт в строку).Почему так делать нельзя? Какого хуя компилятор за меня решает, какие типы я буду передавать? И как лучше, в таком случае, написать фабрику?
>>985198>И как лучше, в таком случае, написать фабрику?Писать её на другом языке. Тут уже был парень с таким же вопросом если это не ты опять
>>985198Делай абстрактную фабрику фабрик и фасоль не забудь.
>>985198Компилятор ничего за тебя не решает, он лишь проверяет валидность кода. Это не задача компилятора - анализировать программу, и если в одной из веток будет бобо, он стопорится.Варианты:1) Костыльный.Сделать no-op конструкторы для всех Base*2) Современный.if constexpr завезли в ++2017, в его ветках могут быть ошибки типизации.3) Сбалансированный.template specialization.class X {public:template<typename T, int t>static Parent fabric(int t, T x) { return new Base1(x); }template<typename T, 0>static Parent fabric(int t, T x) { return new Base2(x); }}};Или как оно там пишется? Забыл уже с тех пор, как читал об этом.
>>985021>> registerФи
>>981590Valgrind же.
>>985256unregister
Кто-нибудь может мне рассказать секрет того, как можно поставить визуал студию в одну папку на одном вольюме? Чтобы она не создавала кучу папок в системном вольюме.
>>985449Виртуалочка.
>>984965потому, что это хороший кодстайл
>>985449Можешь заморочиться и перенести все компоненты в одно удобное место, а вместо них подсунуть симлинки.
>>985481Один раз заморочился, даже заработало, второй раз не хочу.
>>985487Достаточно было написать один раз батник.
Столкнулся с тем что в циклеint arr[256];std::string s = text;for(int i=0; i<s.size(); i++) { f( arr );}s воспринимается как signed char, т.е. вместо какого-нибудь 252 оно принимает значение -4. Это нормально вообще?
>>985580int arr[256];std::string s = text;for(int i=0; i<s.size(); i++) {f( arr\[s\[i\]\] );}s\[i\]fix
>>985580char - это либо знаковый, либо беззнаковый тип. Если нужно что-то одно - кастуй или используй соотв. string (не помню, есть ли он).
>>985580Короче, читай вот тут, а то двач залупается про какое-то слово из спам-листаhttps://pastebin.com/rK0xafPX
Вим и емакс скоро уйдут в прошлое
>>985744Что это за параша?
>>985747GTK, сер.
есть ли какой нибудь список идей который можно реализовать на c++ для новичков?
>>985765Например, 4chan programming challenges
>>985747Enterprise-ready IDE.
А ещё я вот такую замену QSettings запилил которая хранит данные в разных json файлах
>>985834Чому бы не гонять protobuf или flatbuffers, которые позволяют генерировать схемы для настроек, пиздатая вещь, на самом деле.
>>985845>> схемы сообщенийфикс
что нужно подключить что бы написать просто парсер какой нибудь странички
>>985854boost::spirit
А если серьезно придётся использовать какой-нибудь libcurl и std::regex, но лучше сразу вкатиться в Qt и дрочить асинхронный QNetworkAccessManager
стоит ли вкатываться в qt если на плюсах еще толком ничего не писал
>>985860Если понимаешь ООП то да.
>>985860Ну а хули нет?! Только вот Шлее не читай, он пишет про устаревшие вещи, хотя, в целом, все, что там написано, применимо и по сей день.
>>985867а можете подкинуть годных курсов или видосов, только не учебники, хочется сразу в практику
Двач, я новичок в программировании, я хочу использовать в своей коммерческой программе сторонние библиотеки под "3-clause BSD license", можешь подсказать как мне их использовать чтобы всё было без проблем?
>>985881Смотри на их вики официальной, очень много примеров с объяснениями. Когда будешь устанавливать, можешь вытянть примеры.http://wiki.qt.io/Main
Где описывается логика работы позиций считывания/записи в iostream? Стандарт читаю, но пока не нашёл.
>>985593>>985723Благодарю
Что-то я не въезжаю в иострим.Как мне воплотить такую логику:1 читаю файл с начала2 почитал, скипнул (скипнуть могу только в точности за конец файла, размеры записанного известны)3 если не eof, goto 2КАК? peek не помогает - eof не обновляется.
>>986044Попробуй get. peek просто смотрит на следующий символ, из потока его не забирает.
>>986080Мне не нужен get, мне нужно только затестить.Сделал так:.seekg(0);.read(...)while(!.eof()) { почитать скипнуть.read(...)}Нихера.
или .read не потребляет данные?
Хочу в кресты вкатится, есть пару вопросов про область примененияПравда ли, что в основном работа на плюсах заключается в поддержке легаси кода, а что то новое пишут с крайней неохотой? Для промышленного формошлепства есть шарп и жаба, для микроконтроллеров си, для веба всякие руби\питоны\го, биг дата в основном на питоне, что делают то?
>>986095Почти везде есть язык, который справляется с задачей лучше, чем кресты.
>>986087Не понимаю, чего ты пытаешься добиться.Дефайн почитать, скипнуть.
>>986110Ну так вопрос про область применения крестов. Получается, что смысла особого нет, если хочешь именно писать что то новое, а не поддерживать легаси?
>>986115Выходит, что так. Вроде как и пишут на крестах разные крутые штуки, но если смотреть на вещи трезво и выбирать между бедным крестовым ынтырпрайзом и жырненьким Джава интерпрайзом, например, то выбор очевиден.
>>986111Почитать: read, operator>>Скипнуть: seekg
>>986125Так тот код, который ты кинул, будет что-то делать. Сам-то что пытаешься сделать?
>>986129Нет, не будет. eof() не робит.Сейчас на ideone пульну.
Не буду ничего пулять, нашёл дебильную ошибку в своём говнокоде.
Солорсхемы. Присутствует уникальная возможность поменять оформление всего редактора через параетр ui. Пока просто сделал MainWindow::setStyleSheet(), надо будет ещё повозиться со стилями элементов чтобы прилично выглядело.Паттерны для подсветки собираюсь тоже в json вынести, чтобы можно было полностью настроить. Тот же Sublime например ни в какую не хочет операторы подсвечивать
Привет, плюсики. Так вышло, что мне нужно связать ООП и WinAPI. Например, некоторые методы класса мне нужно запускать в отдельном треде. Тред при этом создаётся через CreateThread() из <windows.h>, одним из параметром которого является указатель на функцию процедуру, а другой - void параметра. Другие методы нужно использовать в хуках которые SetWindowsHookEx, в частности для WH_KEYBOARD_LL. Как я понял, WinAPI ориентирован на процедурное программирование, и моя компилятор не позволяет мне скормить не статическую функцию-член в качестве адреса процедуры в CreateThread и SetWindowsHookEx. В случае с CreateThread я нашел выход костыль - сделать функцию static, а в качестве параметра void передавать объект класса, которому принадлежит функция. Однако, с SetWindowsHookEx() такая фишка не срабатывает. Отсюда у меня вопрос - как скормить этим двум WinAPI функциям процедуры-нестатические функции-члены класса? Может быть есть какой нибудь грамотный подход к делегированию вызовов функций с аргументами или типа того?inb4 ООП для пидоров, нахуй ООП, пиши в процедурном стиле - на данный момент интересует решение проблемы именно в контексте классов.
Бляхть, разметка. LPVOID параметр, а не void, указатель на void короче.
>>986463Код дай. Сдалось нам эту поляну разбирать.
>>986463Попробуй анализировать контекст, из которого вызывается процедура. Что знает процедура, когда она вызывается хуком? Сделай таблицу соответствия данных о контексте классам и в процедуре ищи класс в этой таблице, во время добавления хука добавляй данные в таблицу.Олсо, что такое HOOKPROC? В дефайнах MinGW не нашёл. Это может быть метод COM?
>>981412Имею опыт в Code::Blocks, Codelite и DevC++.Первый мощен, но часто сильно тупит и подсказки говно.Второй ничего так, но серьёзные проекты ему лучше не доверять. Третий красив и аскетичен, но подсказок нет от слова совсем. Т.е. что-то есть, но хз.До этого была студия и дотнет, можешь себе представить, как это всё больно.
>>986463>Тред при этом создаётся через CreateThread()пизда тебе>>986463>Может быть есть какой нибудь грамотный подход к делегированию вызовов функций с аргументами или типа того?Обычно делают С-функцию коллбек, в которой как-либо получают указатель на экземпляр класса, и дергают его метод. Опционально коллбек объявляют френдом класса, чтобы дергать приватные методы.
>>986582friend, ебаный насрал, я совсем про него забыл. Спасибо тебе.>пизда тебеДы епта, лабораторная на WinAPI, простите-извините. >>986572Процедура для хука ничего не знает для выполнения необходимой задачи, потому что даже будучи статической функцией класса, this у меня всё равно не будет. Вот сейчас про friend мне напомнили, мб прикручу по уму, а то я уж отчаялся и в main захуярил всё.
>>986572>что такое HOOKPROC
>>986593>Процедура для хука ничего не знает для выполнения необходимой задачиНе может быть. Неужели нету функций для получения информации о среде? О стеке вызовов, например.
>>984455> В C++ подобный функционал без оверхеда должен реализовываться через SFINAE, но никак не через абстрактные классы.Скажи, что ты так пошутил. Или что SFINAE стоит применять для оптимизации уже существующего кода, использующего абстрактные классы как описание интерфейсов.Если же ты прав, то зачем тогда вообще нужны абстрактные классы в крестах? Как внедрять зависимости, не используя их? Я испытываю когнитивный диссонанс, мой уютный мир умных указателей типа интерфейсов на объекты в куче рушится. Я ньюфаг, не бей если несу чушь.
Дайте пример лабы с которой сюда приходят студентота.
>>986668введи и помножь две матрицы.
>>979476 (OP)Подскажите, плз:есть строка (массив char) - "МАМА_ПАПА_ЕСЬЖИ"Как мне проверить каждое слово (разделитель "_") с текстовым файлом?Вот код, который проверяет одно словоif (strcmp(str1, str2) == 0) {printf("Совпало" %s, str1);}
>>986673ты че спросить хотел?проверить каждую букву на символ "_"?
>>986668 -> >>986673
>>986717>>986669То есть мою лабу будет е стыдно вгитхаб залить и на собеседованиях показыввать? Там что-то около 800 строк кода.
>>986673Распидорашиваешь строку на слова (strtok если ты решил угореть по С строкам, или std::istringstream + std::getline) и ищешь их в словаре. strcmp тебе ничем не поможет, если только твой словарь не вектор строк в котором ты ищешь вхождения линейным поиском.
>>986729Хуям на собеседовании будет интересно увидеть что ты пишешь также как они (например правильно разбиваешь код на модули, используешь нужные идиомы), то есть тебя не придется учить писать код. Сколько там у тебя строк и вообще что там написано имеет мало значения. Естественно, кроме случая какой-то твоей собственной уникальной разработки.
>>986732Ага, то есть стоит его красиво оформить?
>>986735Имелась ввиду хуйня типа https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md/Естественно это не высеченная в камне истина, у парней на собеседовании могут быть противоположные мнения по не которым пунктам, и они даже могут оказаться правы.
>>979476 (OP)Сап, анон. Помоги разобраться в том, почему цикл в этом примере написан именно так: http://ru.cppreference.com/w/cpp/algorithm/adjacent_find>for (next != last; ++next, ++first)Для чего в блоке инициализации написано сравнения? Что это дает?Каким образом условие ++next может стать ложным? Если, например, итератор end() контейнера можно интерпретировать как false, то для произвольного диапазона это неверно (допустим, если диапазон выбран в середине контейнера).
>>986634Давай объясню подробнее. Наследование от абстрактного класса переводится как "B является A". Реализация интерфейса - как "B может то, что говорит A". Никакого "является" тут нет.На программном уровне разница будет в том, что в случае абстрактного класса в наследниках функция остаётся виртуальной. Вот примерное объяснение в коде:https://pastebin.com/1cSV7itYСейчас это можно сделать через SFINAE. И вместо`void Func(Interface* A)`где Interface имеет метод F, писать`template<typename Interface>void Func(Interface A){ if constexpr(Has_Method(Interface, "F")) { //Blablabla }}`Ничего, скоро добавят концепты, с ними будет возможно то же самое.
>>986768>ruНе читай ru-сайты, а то постоянно будешь иметь подобные проблемы. Они забыли ; в начале условия. Читни на ангельском, там всё правильно: http://en.cppreference.com/w/cpp/algorithm/adjacent_find
>>986770каталог-кун пишет:современое ООП:толпы быдла долбятся головами об стену невидя двери - для них выпиливают люк.
>>986788Я не знаю, к чему ты это сказал, но иногда бывает нужно знать, что переданный объект точно-точно содержит такой-то метод. А наследование в данном случае будет костылем.
>>984455>Абстрактный класс предполагает наличие таблицы виртуальных функцийно ведь в стандарте про vtable ничего нет, и компиляторы свободны имплементировать нахождение виртуальных функций как хотят.
>>986793так что все вопросы к компиляторам
>>986793Тогда просто "Абстрактный класс предполагает, что все его методы виртуальные". Всё равно это не всегда то, что нужно.
>>979476 (OP)Обычно экземпляр шаблона создается с указанием типов или значений в треугольных скобках. Каким образом компилятор здесь https://ideone.com/BDfVA6 вычисляет длину массива и подставляет ее вместо N? Как вообще создается экземпляр шаблона без треугольных скобок, как выводятся типы, как подставляются значения и почему она встают на правильные места?
>>986807Длина статического массива, который создаётся на стеке, известна компилятору с самого начала. Он же в 13-й строке откуда-то узнаёт размер? Вот и при передаче в функцию знает.Типы в угловых скобках указывать не нужно, потому что есть единственный вариант типа и размера. А значит, компилятор и так знает, что нужно подставить туда.
>>986807>вообще создается экземпляр шаблона без треугольных скобокВыводится тип переданного аргумента (гугли template deduction).>как выводятся типыПо типу выражения в правой части.>почему она встают на правильные места?И почему же он ошибаться-то должен? Подставляет по типу, логично жи.
>>986792Есть мнение, что наследование в принципе всегда является костылём. Недаром в этих ваших новомодных Rust и Go их заменили интерфейсами и трейтами.
>>986879У наследования есть пара преимуществ, когда нужно вынести общий код, а публично доступным для всех его делать не нужно. Но это мне нужно было довольно редко, часто наследование выглядит каким-то натянутым. Как будто кто-то очень хотел прикрутить наследование, но не совсем понимал, зачем оно в этом случае нужно.
Help. Возможна ли активация ToolTip'a без наведения на заданный Button - мыши.##########ToolTip1->SetToolTip(button1, "Text1");При наведении мыши на button1 - Открывает ToolTip1 с Text1.Возможна ли активация ToolTip1 без наведения на button мыши?К примеру, добавляю метод Button1_Click по нажатию на который высвечиваются все заданные ранее ToolTip'ы.
>>986879Вот этот вроде не совсем дебил, и мнение не совсем говно - что удивительно для параши уровня /зк.
>>986922Не знаю с какой технологией ты работаешь, но у tooltip'а нет свойства/поля isVisible или метода типа show()/enable()?
>>986912Я тебе больше скажу: оно так вообще везде.Во всех новых языках наследование давно заменили композицией.
>>987340Проблема композиции в том, что внутренние классы должны торчать полями и методами наружу, чтобы их мог использовать внешний класс. Особенно это хреново, когда кроме как внешнему классу, никому больше эти методы и не нужны.
>>987419Это везде решается модулями, но для плюсов это пока что больная тема, да.
Может кому пригодится. Не отображался текст в консоли MS Visual C++ 6. Перерыл весь интернет, програмистские форумы, ничего не помогало, и вот сегодня, о чудо, нашел в Ответах.Мэйл.ру рабочее решение. Удивляюсь с этого сайта, не раз уже выручает, там рили ответы на все вопросы вселенной, хех.Подключение кириллицы в консоль С++https://pastebin.com/Pc5jM2VGЗалил на пастебин для удоства.
>>987457Лучше бы ОС поставил.
>>987457не знаю можно ли в c++ 6 так, но попробуйsetlocale(LC_ALL, "");
>>987457Хорошая попытка, mail.ru, но нет.
>>987544>не знаю можно ли в c++ 6 так, но попробуй>setlocale(LC_ALL, "");В том то и дело, 99% советов, которых я нашел в интернете, были про это но это не помогло(см. пик).>>987559Ты и так на нем сидишь.>>987513ОС? Сижу на семерке, а на ней виртуалка ХР(а в ней висуал с++ 6).
>>987585Оно еще и гатарипидор.Это ВСЕ обьясняет.
>>987589>титосов >нарутуИ даже эти черви-пидоры все еще лучше гатариговна.
Как конвертнуть сорцы в 866-кодировку?
>>987619Иди уже нахуй, гатаридебил.
>>987585А че это у нас локали выкинули уже что ли из стандарта?!http://ideone.com/t0jzwb
>>987623>На хуе>вазелин Сразу видно - ОПЫТ
>>987446>модулямиЦпп макакичам даже нормального способа переключения кодировки твывода в терминал не завезли, модулями ему косяки композиции прикрывать видите-ли надо.
Сап, аноны. Пытаюсь, значит, выучить C++ за 21 день, дошел до очередных заданий, и сразу же возникло непонимание. Следовал указаниям, но у меня не запускается и не компилируется. Может, проблема в компиляторе? Использую Dev cpp. И еще вопрос - у нас главный файл use.cpp, к нему подключается my.h, как компьютер поймет, что нужный код еще в my.cpp есть?
>>987649Проблема в std_lib_facilities.h обычно, не инклудь его.
>>987649Обычно каждый исходный файл компилируется отдельно в объектный код (что типа g++ -o user.o -c user.cpp), дальше линкеру скармливаются все файлы с объектным кодом и он уже и собирает готовый исполняемый бинарник (g++ -o myapp user.o my.o)
>>987655Я его и не использую.>>987656Что-то как-то сложна. И, в любом случае, они у меня не копилируются (или не собираются, я хз, в эти тонкости еще не вникал) никаким образом.
Здрасьте. Я тут учусь помаленьку и у меня возник вопрос. Вот код:https://pastebin.com/JcFdXneJЭто задание на наследование и прочее. И вот возникает странная ошибка из-за делегирования конструкторов и значений по-умолчанию. Если вы скомпилируете, то увидите, что цепочка, в итоге, приводит к обнулению переменных w,d,h. При том weight, которая находится всего на один уровень выше - задаётся корректно. Что это и как это исправить?Ну, в смысле, вон, если убрать комментарий в конструкторе UberBox, то, несомненно, я получу нужные значения. Но мне бы хотелось воспользоваться предыдущими конструкторами.
>>987649> Dev cppЭто IDE, а не компилятор, проверь, возможно ты скачал версию без компилятора. То что нужно два файла компьютер не поймет никак. Обычно за этим следит IDE - ты создаешь проект, добавляешь в него файлы, а IDE уже скармливает компилятору все файлы в проекте. Посмотри, возможно стоит Qt Creator использовать - потом сразу в Qt вкатишься.
>>987660Используй для Box дефолтный (без параметров) конструктор. А вообще наследование ромбом хреновая идея.
>>987660>обнулению переменных w,d,hОни не обнуляются, а изначально равны 0 - в твоем классе есть два набора переменных w,d,h. Один ты изменяешь, а второй нулевой.У тебя РОМБ КЛАССИЧЕСКИЙ. Енджой йор МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ.
>>987662А почему Qt Creator, а не какую-нибудь Visual Studio? И нет, версия у меня точно с компилятором, и я эти файлы и через проект создавал, и по отдельности - никак не работает.
>>987666>>987667Такс. А ромбы нельзя? У нас в примере с лекции было такое, там про virtual, собственно, только сказали.За просто Box спасибо
>>987671Ромб можно, но только в С++. В нормальном обществе за ромбы бьют якорем по яйцам.
>>987668В студии специфическая версия плюсов, и она несколько жирнее креатора (с учетом фреймворка). Так-то студия это оптимальный вариант, если тебя не смущают нюансы. И ты на используешь операционную систему виндоуз.
>>987672Ну, в моей любимой джавочке это в принципе невозможно. Такс. А как мне избавиться от второго набора переменных сохранив ромб (лол. Никак, да?)? Или как мне ,однозначно, обратиться к тому набору переменных который инициализировал тот конструктор?
>>987675мдя. Чому так сложно? Не хочу заниматься памятью:\
>>987675Избавиться нельзя. Обращаться указывая нужный класс, что-то типа BoxWeight::w = 77;
>>987682понятно. Спасибо большое.А.. Как сделать приведение типа, скажем, от BoxNamed к Box? Я не совсем понимаю как это именно написать, видимо, косячу с самим синтаксисом перегрузки оператора. Оно то предлагает сделать его void, то говорит, что "'Box' is an inaccessible base of 'BoxNamed'"
>>987675virtual наследование
>>987686Оно там есть. Куда его ещё запихать?
>>987687https://isocpp.org/wiki/faq/multiple-inheritance#virtual-inheritance-where
Поясните, зачем вкатыватся в кресты, если на на них пишется только легаси?
>>987715Потому, что этого легаси ещё лет на 10 хватит. А в странах третьего мира и на все 30. Но офк глупо ограничиваться этой еботекой с указателями(не в обиду, господа)
>>987695не понимаю. А в чём разница того что уже есть с тем, что в статье?
>>987715Это универсальный переносимый язык с промышленным стандартом и довольно небольшим оверхедом.Легаси это не про языки, легаси это про подход к разработке (куча горизонтальных зависимостей, протекшие абстракции, отсутствие тестов).
>>987684Если у тебя приведение типов происходит снаружи (а не в имплементации класса) то наследование нужно делать публичным.
>>987735О... Да. Это помогло. Теперь я немного лучше понимаю табличку и вообще, что именно та ошибка имела ввиду. Спасибо.
>>987728Легаси это именно что совокупность говна мамонта.Помню где-то скрин видел с форума, где был запечатлен пост защитника VB6 относительно свежей даты, который рассказывал что ЯП это тебе не залупа и в нём новых косяков не появляется со временем, то есть он не стареет эх, а ведь он даже не подозревал насколько неправ.
В win32 приложении я повесил hook через SetWindowsHookEx на клавиатуру. Больше приложение не делает ничего, только ждёт нажатия на клаву с последующим обработчиком события. Как теперь поддерживать процесс в рабочем состоянии чтоб не вышел и способном принимать сообщения через хук? Желательно не что нибудь типа while (true);
>>987892Ладно, с этим вроде понял, для хука нужна прослушка сообщений через GetMessage(). Теперь другой вопрос: если я закончил прослушивать нажатия клавиш, как мне из другого треда послать в основной сообщение WM_QUIT? Всякие PostMessage, PostQuitMessage, судя по описанию на msdn, посылают сообщение в своём треде.В наличии есть id обоих тредов а может еще что то, о пользе чего я не знаю
>>987914Всё, проблема решена. PostThreadMessage в совокупности с GetMessage работает пэрэекарасно.
>>979476 (OP)https://pastebin.com/NMEs8XK3 - где ошибка в моей рекурсии?Всегда 1 в ответе
>>985364Это немного не то. И думает он по полтора часа. Да и с гпрофом я уже разобрался - надо было просто статически слинковать.
>>981597Ботлнек получается и в итоге все работает медленнее чем в однопотоке. Если б на каждый поток можно было завести по пайпу, в который скидывался бы результат, а потом по окончании их работы эти пайпы собрирались бы в контейнер, может и вышло что-нибудь.
ребят, помогите пожалуйста, это интерполяционный метод Ньютона, и я не могу понять, где моя ошибка. После десятого dx на экран выводятся слишком большие значения. Проблема, по моему скромному мнению, находится в рекурсивной функции, помогите пожалуйста. Не ругайтесь насчет ненужной переменной в функции, я знаю она не нужна. https://pastebin.com/edit/fQ50AM5R
Сейчас будет тупой вопрос, как называются переменные в классах? Гугление только усугубило проблему, мне кажется что у них десятки наименований которые все обозначают тоже самое, говорит ли что-то об этом стандарт?
>>988190>Сейчас будет тупой вопрос, как называются переменные в классах? Гугление только усугубило проблему, мне кажется что у них десятки наименований которые все обозначают тоже самое, говорит ли что-то об этом стандарт? ЧЛЕНЫ! ИХ МОЖНО ДЕРГАТЬ! — Смотри, я… вот у нас здесь функций много… ой-ой… функций много, понимаешь? Смотри, функции, они тебе спать мешают. А я вот, давай вот я функции прямо в структуре объявлю, и они все в структуре будут, и мы их методами назовем, слышишь, членами назовем? И тебе тогда спать, ой, спать будет хорошо. Давай? Ну, куда им ещё, ихнее место-то тока здесь. А структуру - классом.— Ты можешь просто помолчать, всё, пиздец?!— А еще в классе два члена сделаем, конструктор и деструктор, и они сами собой эти члены дергаться будут. Вот так, дерг, дерг.— Заебал, блядь!— А еще у класса родитель может быть, а этот класс тогда дочка. И у дочки тогда все члены родителя будут, ну они же наследуются, ну. Понимаешь, братишка. У дочки члены родителя будут. И их тоже дергать можно будет.— Ёб твою мать! Блядь! Иди отсюда на хуй, блядь!— Но не все члены дергать можно будет, будут публичные члены, которые все могут дергать, вот ты мой публичный член, например, можешь подергать.— Сука, блядь, пидорас, блядь!— А другой член только родитель сможет дергать, и больше никто. А еще будут члены, которые только родитель и дочка дергать смогут. Братишка, братишка... Дочка у родителя член дергать сможет, понимаешь, братишка.— Иди под струю, сука! Мойся!— А еще можно будет класс-дружочек сделать. И тогда этот дружочек все членики у своего дружочка дергать сможет.— А блядь на хуй! Ну, иди сюда сука, блядь! Дерьмо собачье, блядь! А блядь!— А у дочки много родителей будет, и все членики родителей у дочки тогда будут. Их можно будет дергать и другим не мешать дергать, понимаешь?— Мудак, блядь, ну ты мудак. Я тебя сейчас убью нахуй, а тебя, бля, сейчас убью, блядь!
>>988106>https://pastebin.com/edit/fQ50AM5RTo get to the requested page you must first login.>После десятого dx на экран выводятся слишком большие значения.Возможно где-то переполняется переменная. (или становится равной нулю)Или, со знаком что-то происходит.Убедись, что у тебя все переменные double.Запиши все значения всех переменных на каждой итерации в лог.
>>988190Называешь как хочешь. Я предпочитаю _field_name или _fieldName, подчёркивание отделяет приватные от публичных в автодополнении и всяких списках в IDE если такие есть.
>>987954Тип sum.
Сап, крестовый, как записать объект в файл чтобы потом его прочитать?
>>988259toJsonfromJson
>>988259Если в объекте нет ничего виртуального и нет указателей: file.write((char*)object,sizeof(object));А по-взрослому это делается так: для кажлого объекта надо определить operator>> и operator<<, в которых ты ручками пишешь порядок вывода всех членов, и делаешь их френдами объектов, если есть приват-члены.https://isocpp.org/wiki/faq/serialization
>>988263Какие библиотеки норм для json? >>988265При такой записи ( не по-взрослому ) ошибка при чтении и гроб-гроб
>>988288>>988265Только я делал (char *)&object
>>988288https://github.com/theanonym/yoba-json
>>988289Нутыпонел.>>988288>При такой записи ( не по-взрослому ) ошибка при чтении и гроб-гроб ??? Оберни в trycatch.
>>988288https://github.com/fffaraz/awesome-cpp#json
>>988241https://pastebin.com/fQ50AM5R>https://pastebin.com/edit/fQ50AM5Rверхняя ссылка должна работать
>>988316Попробовал я с JSON в Qt разобраться. Записать-то я записываю. Но по клику мышки можно записать хоть сколько json-ов. Как мне их теперь читать-то?
Здаров, хочу вкатиться в сетевое(серверное) программирование... Мол сокеты беркли, высокопроизводительные сервера, вся хуйня, желательно кросплатформенными примерами на бустеА не много ли я хочу?. Подскажите плз что почитать?
>>988396>> высокопроизводительные >> бустеПроиграл
>>988564А что по твоему более производительнее??
по интерполяции ньютона есть кто? https://pastebin.com/fQ50AM5R
>>988655>по интерполяции ньютона есть кто?Я тебе вроде уже отвечал.Чтобы ты все расчеты залогировал.Ты на листике считать можешь эту интерполяцию?
>>988653epolllibeventда libuv тот же производительнее будет, другое дело, что все это ЦЭ
Как найти работу в ДС на 170+ штук?
>>988390Ты походу с самим json не разобрался, неправильно ты пишешь в файл, батенька.Тебе нужно создать массив объектов в json.Либо:[{//good1},{//good2}]Либо:{"goods": [{//good1}]}А ты пишешь в json:{"price": 10,"count": 50...}{"price": 50}что валидным json не является.
>>988390А вообще, как-то так, в случае, если в jsonе у тебя структура вида:{"goods": [{//good1}]}
>>988683спс анон
В чем разница междуconst int size = 7;int i_array[size];иint i_array[7];
>>988705Ничего непонимаю.Это С++ на пикрелейтед?Почему не макароны, как у анона которому ты отвечаешь?И что за подсветка синтаксиса, и откуда?
>>988919Да, С++, QtCreator.Подсветка илитная.
>>988881В проекте лаба_1 нивчем.
>>988937А в проекте yoba_kursach_v_2.4.3_FINAL?мимо уровнем чуть выше чем лаба1, но отличий не вижу
>>988940Представь себе:1) что этот волшебное число 7 у тебя по всему проекту в 256 местах.2) что у тебя в одном хедере написано конст нормально имя переменной, четко понятное размер чего это и зачем = 7Теперь тебе надо сменить это значение на, допустим 9. Или даже не тебе адруглму уебку, тошо ты давно уволился.В каком случае уебок соснул?
>>988944Зачем я должен помогать уёбку не соснуть?
>>988947А что ты сам можешь задержаться на этом месте дольше месяца ты не рассматриваешь как вариант, я полагаю? За такой код тебя пидарнет нахуй сеньер помидор после первого же код ревью, быдлокодеров типо тебя в любой шараге можно набрать за 100$ пучек. А пояснять инвестору почему сменить количество рабочих часов в дне займет 3 месяца и еще 2 месяца багтестинга ему не захочется.
Граф без весов можно хранить списком смежности. А как СПИСКОМ хранить взвешенный граф?
>>989083Список пар смежностей и весов, лол.
сложно ли найти работу на плюсах? Какие обычно требования к с++ погромисту, что нужно уметь.
Антоны, прогавшие под Android NDK, поделитесь впечатлениями. Много ли проблем с адаптацией кода под разные архитектуры? Много ли гемора с дебагом? Как на андроиде дела с STL? Что менее проблемно, писать NativeActivity (всё приложение написано на C/C++ и из него, возможно, иногда вызываются методы Java) или дёргать функции либы из простого Java-wrapper-а (конкретно, функцию, рендерящую сцену - 1 раз за кадр)? Какие подводные камни?
>>989142Знать фишечки новых стандартов, понимать наследование\тимплиты\эксепшены. Знать алгоритмы хоть немного, заглядывать в многопоточку.
Использует ли тут кто Makefile? Я что-то ни черта понять не могу, что делают шаблонных правила? Можете объяснить своими словами?
Анон, помоги разобраться в ошибках. Есть такой код: https://ideone.com/Mq06WNФункция check принимает ссылку на строку с информацией об исключении. Операторы ++ и -- вызывают ее в самом начале. При компиляции этих операторов возникла ошибка "Нелья преобразовать const char * в std::string&", связанная с передачей ASCII-строки. Чтобы избавиться от этой ошибки, пришлось явно создавать объект std::string. Почему возникла эта ошибка?
>>989157>Использует ли тут кто Makefile?Я.> Я что-то ни черта понять не могу, что делают шаблонных правила? Можете объяснить своими словами?Ну работают по шаблону)))00В большинстве случаев лезть в шаблонные правила не нужно, они и так есть неявно. Достаточно переопределить всякие CPPFLAGS, CXXFLAGS, LDLIBS и указать зависимости бинарников от объектных файлов. А остальные зависимости находить с помощью компилятора и подключать *.d-файлы.Ах, да. Самое главное — не забыть написатьLINK.o=$(LINK.cc)
>>989207>"Нелья преобразовать const char * в std::string&"Каждый божий день такой вопрос, блеать.Потому что неконстантные ссылки не биндятся к временным объектам.> Чтобы избавиться от этой ошибки, пришлось явно создавать объект std::stringЕсли компилятор пропустил что у тебя в 15-й строке, то это значит, что у тебя MSVC.
>>979476 (OP)СапНужно заменить первый столбец матрицы "x" на столбец матрицы "у",выполнить функцию, вернуть все обратно, заменить второй столбец, функцию и все эти действия до конца матрицы "x".Как заменить конкретный столбец? А то у меня вообще все заменяются https://pastebin.com/C3D8yjeP
>>979476 (OP)За сколько времени можно вкатитсья в кресты, если буду хуярить по 4-5 часов в день?
>>989255Зависит от того, чем раньше занимался и для чего хочешь использовать C++
>>989248https://github.com/sosachbot/cppthreadhat/wiki#Памятка-нюфагу> Лабы идут на хуй
>>989269Это не лаба.А смысл тогда этих тредов? Вверху один срач, и я не думаю, что мой вопрос требует много времени для ответа более опытных кодеров.
>>989271>>989248Двумерный массив - это может быть указатель на массив чисел, он же двойной указатель он же указатель на массив указателей, каждый из которых является адресом первого элемента массива.Короче, тебе надо сделать что то типа такого:for (auto i = 0;i<2;i++)X=Y;//Или Y[0], если у тебя Y - не одномерный массив, а двумерный.
>>989275проебался. в цикле X конечно же.
>>989275Ах блять, разметка. В цикле X квадратная скобочка открывается))) i квадратная скопочка закриваеться))0.
>>989275Спасибо, вот что получилось, если интересно.https://pastebin.com/U36eqSWY
>>989258Ничем вкатываюсь с нуля. Пока правда не думал чем буду заниматься. Хотел с лаб начать, потом уже определиться что хочу на нем делать.
>>989299>с лабЩас местный контингент тебя нахуй пошлет.
>>989306А с чего тогда лучше начать?
>>989146STL - это такая вещь, которую, грубо говоря, можно хоть из другого компилятора взять. Если есть компилятор, есть и STL.
>>989248Бляя, все через пизду, еще один тупой вопрос, не ругайте. Замена работает правильно но ебучий детерминант считается правильно только для первой замены, дальше все по пизде едет.При втором вызове функции det_x присваивается значение первого детерминанта, а не единица, как исправить?
Майки добавили модули!
>>989299Имхо, учить плюсы с нуля плохая идея. Я сам начинал в универе с плюсов, потом продолжил на С#, и только потом совсем недавно вернулся на кресты. Тебе тоже посоветую начать с шарпа, потому что на шарпе ты сразу же будешь учиться именно программировать, а не ебать мозги с особенностями синтаксиса и компиляции крестов. А потом, когда на шарпе разберешься с ООП, паттернами программирования, многопоточностью/асинхронность, сетевым программированием и почувствуешь, что шарпа тебе недостаточно для твоих целей, тогда можешь осваивать синтаксис и тонкости крестов. А так, бросясь с нуля сразу в кресты, ты только усложнишь своё обучение программированию и повысишь риск того, что тебе оно надоест/станет слишком сложным для освоения.Вообще, шарп тоже неплохой язык и на нем можно делать деньги, правда делают на нём в основном не то, что на крестах.
>>989319Ну с лаб и начинай.Есть много литературы по плюсам с теорией и самостоятельными заданиями, их и решай
>>989207Потому что "строка" - это куча символов где-то с нулём в конце, а std::string - объект известного размера, и компилятор не обязан создавать string из "строки" (ака строчный литерал).
>>989323Вот мой полный говнокодhttps://pastebin.com/TSsnwiXs
>>989325В 2015ом?https://www.google.ru/search?q=c%2B%2B+microsoft+modules
>>989342a, ok.
>>989327Вот тут мнения почему-то расходятся. Одни говорят, что надо с чего-то сложного начинать типа крестов. Другие наоборот - с простого.
>>989322Имелась в виду не только библиотека шаблонов контейнеров, а вообще вся плюсовая (C++11 хотя бы) библиотека: <thread>, <atomic>, <chrono> и т. д.https://developer.android.com/ndk/guides/cpp-support.htmlТут, например, про LLVM libc++ они пишут, что она у них нихрена не стабильная. И вообще предлагают выбирать из нескольких плюсовых библиотек. Значит у всех них, вероятно, есть какие-то проблемы, иначе они бы написали "юзайте вот эту библиотеку и всё будет нормально".
>>989362>Одни говорят, что надо с чего-то сложного начинать типа крестов.Покажи мне эту суку.
>>989372Это я :3
>>989327Начинать программировать с ооп макарон и тонны ключевых слов? Пускай учит Perl/Python
>>989327Учу плюсы с нового года (медленно и неторопливо), все никак понять не могу, почему кодеры используют char* вместо string?
>>989376Головка от хуя.>>989434ЕМНИП, потому, что, если надо передать часть строки, надо копировать её. Олсо, некоторым больше нравится набор str*(), чем методы string, а результат всё равно один - байтоёбство и хорошая скорость.В C++17 завезли string view, вот тут и заживём (что мешало сделать const string-конструкторы, которые ничего не меняют?).
>>989434Тому что стринг это не базвый тип. Не у всех подключено. Даже если ты в своем проектике и пользуешься каким-либо библиотечным стрингом, всеравно любые связи с другими либами будут через чар указатель, тошо каждый мудак мечтает написать свою реализацию стринги.
>>989434Без надобности тратится процессорное время и память на создание и удаление объекта string.
>>989462>всеравно любые связи с другими либами будут через чар указатель, тошо каждый мудак мечтает написать свою реализацию стринги. Из чего делать связи со статическими либами - пофигу (хоть через std::set, хоть через vector, хоть через аллаха), а вот с динамическими могут быть проблемы.
здравствуйте, посоветуйте как мне научиться создавать рекурсивные функции для расчета всяких сложных вещей типа полинома Ньютона когда там одно на другое накладывается?
>>989434обратная совместимость с C.
>>989522нахуй иди пёс
>>989522С такой прямотой тебе секс никогда не обломится.
>>989539неверно, пошел ТЫ>>989587обломится, я знаю, это тебе он не обломитсяно все же помощь с пониманием рекурсии и формул ньютона была бы замечательной
>>989522Так рекурсия или полиномы? Судя по всему, нет даже базовых навыков? Сходи на Степик, найди курс Шеня. Через месяц инварианты начнёшь видеть даже в небе.Ну или Кормена почитай, например.
>>989603>была бы замечательнойЭто верно.Жаль что ты её не получишь.
>>989611у меня есть базовое понимание рекурсии, но я не знаю как превратить полином в рекурсию
Как создать load-time DLL в visual studio? Проект win32 → статическая библиотека, это оно? Формат у load-time .Lib или тоже .dll должен быть? И как её потом в приложение добавить? С runtime dll проще - просто в коде вызываешь WinAPI'шный LoadLibrary или аналог на любой другой ОСи указываешь путь к файлу .dll, а с run-time что? На msdn для load-time только описание, а для runtime описание и пример.
>>989654Я бы тебе даже ответил, но я не знаю, что ты спрашиваешь. Начни с википедии.
>>989668Библиотека может быть статической и динамической. Динамическая библиотека может быть прописана в зависимостях PE, а может подгружаться кодом.Для того, чтобы динама подгрузилась сама, тебе не нужно ничего делать в коде.http://stackoverflow.com/questions/32562242/static-and-dynamic-linking-in-visual-studioДальше сам гугли.
Когда код C++ компилируется, какие данные об именах можно найти в исполняемом файле в машинном коде? Есть ли там имена классов и их членов, переменных, функций, пространств имён, структур и их членов? Имена исходных файлов и хэдеров?
>>989746Только если компилируешь с дебуг-информацией.
>>989748Это параметр на картинке?С одним из параметров есть информация об именах всего мною перечисленная, а при другом - вообще никакой информации?
>>989753Картинку забыл, блять.
>>989753Информацию о том, что ты использовал, можно выудить косвенно, но намеренно вписывать её, если вот эта шняга выключена, компилятор не будет.
>>989757Я спрашиваю, потому что читал про использование уточнение декларации extern "C" { }, но не особо въехал в причины необходимости. На msdn'е что то говорится, что компилятор C++ имена функций и переменных являются не то виртуальными не то еще какими то, а в C, мол, такого нет, и чтоб C мог подхватывать функции из хэдеров C++ нужно их вот так объявлять. Так во что или как тогда компилируются имена переменных и функций в крестах и на си?
>>989760 что компилятор C++ имена функций и переменных делает не то виртуальными, не то еще какими*
>>989760Так бы и сказал, что либу пишешь. В выводе компилятора будут все extern-переменные с именами и все extern-функции с именами. С extern C они могут быть использованы программой, собранной любым компилятором (аргументы не включены в описание процедур, вроде), без него - только с тем компилятором, который шифрует имена таким же образом (гугли name mangling, это кодирование аргументов функций).В статических либах это неважно.
>>989331>и компилятор не обязан создавать string из "строки" (ака строчный литерал).Обязан, см. 5-й конструктор http://en.cppreference.com/w/cpp/string/basic_string/basic_stringЗачем ты лезешь с умозрительными рассуждениями? Проследуй в ньюфаг-тред.
Типы возвращаемых значений тоже включены в код, вроде. Это всё нужно для overload-ов и аргументов-тимплейтов.
>>989771Тупой ебанат. Прочти сообщение, на которое я отвечал - чувак хочет передавать строчный литерал вместо std::string без создания std::string.Нассал тебе в ушко.
>>989772overload-ов по возвращаемому значению в C++ нет.
>>989760Речь видимо идёт о name mangling. Смотри, вот тебе пример на крестах ( https://godbolt.org/g/A1D5Bp ):int add(int x, int y) { return x + y; }int add(int x, int y, int z) { return x + y + z; }Эти функции не могут храниться под одинаковыми именами. Поэтому компилятор генерирует функции с именами, в которых содержится дополнительная информация о типе аргументов например. Но сишка-то об этом не знает, в сишке mangling'а нет, так что для сишки нужно объявлять без mangling'а.https://en.wikipedia.org/wiki/Name_mangling#C.2B.2B
>>989773Тупой ебанат. Компилятор создаёт временный std::string, если ты передашь const char[N] в месте аргумента std::string.А теперь вернись в php-тред.
>>989775>>989770Благодарю, разобрался. Да, mangling.
>>979476 (OP)Посоны, дайте наиболее правильный и простой пример заполнения динамического массива с задаваемой пользователем размерностью рандомными ДЕЙСТВИТЕЛЬНЫМИ числами.
>>989956С каким распределением?
>>989958new
>>989965Идиот, блядь.
>>989956>ДЕЙСТВИТЕЛЬНЫМИ числамиСовременная вычислительная техника все еще находится на приблизительно уровне каменного века, и работать с действительными числами не умеет. Еще даже вроде 128-битных регистров нет. Жди появления процессоров с бесконечным размером регистров.
>>989965KEKСоздаёшь указатель float* floatArray = new float[n]на массив чисел типа float (или double для большей точности). n - переменная, определяемая пользователем, необязательно константная. А если хочешь поведения как у vector, но создавай структуру-обёртку типа struct myVector<T>{}и определяй в нём методы push, pop, reserve. Думаю, в STL'овских векторах там либо те же new-delete, либо через WinAPI VirtualAlloc какой нибудь.
>>989958А на самом деле, rand() какое распределение имеет?
>>990000> 2k17> rand()
Помогите, пожалуйста, нюфане.Как правильно иницировать цикл от нажатия определенной клавиши до нажатия другой?Если я допустим делаюchar y = getch();while (y = 'y'){}То как я смогу изменить значение y, не заставляя цикл остановиться?
>>990067>getchОлоло.
>>990067kbhit
>>990077Но он же начинает работу, когда нажата любая кнопка, а мне определенная нужна.
>>990080а ты ебани while (kbhit()=='y') или VK_Y, что он там возвращает
>>990000>>989956http://en.cppreference.com/w/cpp/numeric/random/>>990067>То как я смогу изменить значение y, не заставляя цикл остановиться? Ты либо хочешь бесконечный цикл, либо ты перепутал = с ==, либо тебе нужно сохранять y во вторую переменную, менять и восстанавливать в конце тела цикла из копии.
>>990083>http://en.cppreference.com/w/cpp/numeric/random/
>>990086Сорян. http://en.cppreference.com/w/cpp/header/random
>>990089http://en.cppreference.com/w/cpp/numeric/random
>>990083Как я могу в цикле изменить значение у, не заставляя его остановиться.Ведь если я сделаю char y = getch();while(y == 'y'){/*/y = getch();}он выполнит цикл однажды, а затем будет ждать другого нажатия кнопки.
>>990086Убери слеш последний в адресе.
>>990094Давно убрал. Просто я люблю тыкать людей в их незначительные ошибки.
>>990002А что модно в 2к17?
>>990140Дело не в моде, а в гарантиях.
>>990140https://github.com/7Y2RPXK3ETDCNRDD/dungeon_generator/blob/master/Headers/Rand.h
> std::mt19937 mt(time(NULL));В голос.Не слушай этого >>990166 идиота.
>>990178Пожалуйста, скажите это же пузырек?
>>990182Не скажу.
>>990182Под этой плашкой я приравниваю i к 0
>>990189Всем пофиг
>>990191Мне тожея пришел повниманиеблядствовать
>>990140http://govnokod.ru/13289
>>990182Бля почисти интерфейс и настрой подсветку
>>990182нет
>>990147>>990166>>990296>>990178Так и что в итоге лучше rand()?
>>990367Тебя это ебать не должно.
>>990387Почему?
Как в map в качестве значения использовтаь массив? Как объявить?
>>990427Тип и две звёздочки
>>990427Используй std::array
Можно ли в Notepad++ сделать так, чтобы в списке функций класса (по кнопке "список функций") были также конструкторы и деструкторы класса?
>>990093Порядок изложения вопроса - пиздец. Тебе не переменную менять нужно, тебе нужно асинхронно читать из stdin. Нет способа для того, чтобы посмотреть, есть в stdin новые символы или нет. stdin - это не интерактивная сущность, у него есть только два состояния: eof и "щас прочитай что-нибудь, и если появится eof, я те скажу". Для интерактивной работы с клавиатурой нужны другие инструменты, и для того, чтобы сделать то, что ты хочешь, и именно через stdin, где-то в этом инструменте должна быть асинхронность (два потока - один main, другой читает).>>990140>>990367В глазки любишься? Посмотри все овтеты на свои посты.>>990182Родина дала тебе std::swap. Олсо, за один проход пузырёк не работает, так что нет.>>990427std::array - его можно использовать везде, где ты можешь использовать сишный массив.
Посоветуйте хороший мануал по работе с MMF на c++
>>990182>>990456Это чистый СИ, в стандартных библиотеках нет Swap'a. А проход не один, после каждого выполнения условия счётчик обнуляется >>990189
Помогите, плез, с Qt и SQL.Вообще, проблема, кажется, в tableView...Вылетает на " ui->tableView->setModel(model); ui->tableView->show();"https://pastebin.com/NpNtPs2bВот исходники
>>990677> проход не один, после каждого выполнения условия счётчик обнуляется >>990189Похоже на сортировку выбором
>>990677>Это чистый СИ, Это крестотред. Очень приятно, чаю хотите?>>990715Всё-таки, на какой из двух?
>>990715И что такое ui_dialog? Самое главно ты не показал.
>>990750Не понял вопроса. Форма и класс под нее, по сути, автосгенерированы QtCreator'ом>>990749На setmodel вылет.
>>990765Ага, так этот код не запустить без кода, который по твоей форме сгенерировался.
>>988390Что за цветовая схема? Поделись, пожалйста
>>990776Тогда можно потелепатировать: как сделать в QtC такую форму, с которой программа будет вылетать?
>>990715>private Ui::DialogЗачем наследовать сгенерированный класс? Никогда такого не видел, он должен быть полем в классе (указатель на не существующий в хедере тип), а "ui_dialog.h" подключается в cpp файле. setupUi(this); вызывается в самом начале конструктора.Если что-то другое сегфолится - запускай дебаггер и смотри где проблема.
>>990852>>990813https://yadi.sk/d/mFpUP-fP3JA3eWВот файл проекта. Наследование прописалось автоматически при , опять же, создании формы в QtC
Делаю тестовое задание. Считается ли std::pair контейнером?
>>991168Если тебе на мейлаче скажут, что нет, а работодатель скажет, что да - будешь в этот тред ссылаться?
>>991168http://en.cppreference.com/w/cpp/concept/Container
Где найти последнюю версию стандарта плюсового в pdf, бесплатно, без регистрации и смс?
>>991193В гугле и на рутрекере.
>>991200Такая хуйня вместо стандарта пойдёт?
>>991326Подойдёт для 99,999% применений.Олсо http://eel.is/c++draft/ - драфт 2017го.
Сап. Вот у нас есть допустим int x = 4; то есть обычная переменная. И есть ссылка const int &ref = x. Всегда думал, что const у ссылки означает только, что через данную ссылку изменять то, на что она ссылается, не получится. В то же время, если x поменяется, x = 10, ref должна тоже быть 10, так как ссылается на x. Но вот один коллега утверждает, что ссылки на константу в некоторых случаях могут "оптимизироваться", то есть не обновляться от изменения переменной, на которую ссылаются. Я вот думаю, что это чушь, никогда не встречал упоминаний о таком поведении и ни разу не сталкивался на практике, но на всякий случай, ткните носом в учебник/стандарт, где написано что такого действительно не может быть.
>>991492Если у тебя есть два потока, которые, для примера, должны выполняться на разных ядрах процессора, то вполне может сложиться ситуация такая:на первом ядре: 1. значение х считывается из памяти2. что-то делается со значением хна втором ядре (и втором потоке соответственно):1. переменная х изменяется2. что-то ещеТак вот, синхронность операций между потоками не оговорена, поэтому первый поток может считать устаревшее значение, даже если второй поток уже изменил его, потому что первый поток на своем первом ядре полезет в горячую память кэша, не промахнется при этом и увидит, что там значение, скажем 2. А второй поток уже в тот момент времени записал в ту же ячейку памяти значение, скажем 3. Так вот до тех пор, пока область кэша, где хренится х не инвалидирована, каждое ядро будет видеть такое значение х, которое было получено при предварительной выборке.Для этих дел уже издревле придумали атомарные операции. Но с "небольшим" промедлением они попали в 11 стандарт.
>>991492А своего воображаемого коллегу ты не можешь спросить про то, на чём он основывает свой бред?>>991694Это не специфично для ссылок.
>>991752Любой объект можно хранить по ссылке. Тот же указатель только со слегка измененной семантикой.Ничто не мешает тебе сделать такое, к примеру:class A {public:A(int &x) : _x(x) { }private:int &_x;};
>>991492Конкретно ссылка не может не "обновиться", потому что ссылка реализуется через указатель. Но в некоторых ограниченых случаях компилятор действительно может соптимизировать и закешировать значение переменной (в регистре процессора). Для таких случаев есть ключевое слово volatile которое запрещает кеширование. Но это касается переменных вообще всех, а не именно костантных ссылок. Очень маловероятно что константные ссылки как-то еще более агрессивно оптимизируются, так как это будет приводить к слишком не предсказуемым результатам, причем в и так изначально очень ошибконебезопасной ситуации (многопоточность с разделяемым состоянием).
Как можно очистить массив произвольных элементов без лишних затрат на выделение памяти?
Ананасы, как в qt влепить поверх виджета анимированный кружок Ну типа как в винде, когда что-то подгружается такая залупа крутится?
>>991937delete [] arrayName;
>>991984Нарисуй макет крутяшки, в ФШ или еще где сотри весь фон (шоб прозрачно всё было, кроме рисунка), потом налепи на canvas/image и крути его изменением угла наклона
блять. я просто добавил второй проект в решение, добавил в первый проект ссылку на второй, потом удалил ссылку а затем и весь проект. теперь я вижу пикрелейтед. что за хуйня и как это исправить?
>>992000всё, отбой. нашел решение.
>>992003Мы очень за тебя рады.
Объясните мне, зачем сишники кастуют результат всяких системных функций, если не присваиваете значение?
Я собрался делать свой простой ЯП на С++, который будет включть строки, числа, if/else, for, списоки, работа с http, компиляция в бинарник. КАКИЕ ПОДВОДНЫЕ? Что нужно изучить?
Читаю в цикле символы из файле с помощью get (ifstream), но упираюсь в нулевой байт и зацикливаюсь, почему get не переходит на новую строку а проскакивает её неизвестно куда?
>>992366Ничего не понятно.
>>992373В общем как мне посимвольно считывать текстовый файл? Функция get из библиотеки ifstream упирается в конец первой строки не переходя на новые строки.
>>992379http://ideone.com/ukFqIv
>>992357Гугли Ахо, Ульман Компиляторы. Принципы, технологии и инструменты
Панове, смотрите, функция WriteConsoleOutputA пишет в сосноле системной кодировкой с кириллицей. Как сделать так, чтобы она писала cp850? Пробовал SetConsoleOutputCP и SetConsoleCP - ничего не меняется, что бы я там ни ставил - все равно кириллица дефолтная.
А ты там вручную в main не локаль не устанавливаешь на LC_ALL, "russian"? И вообще, посмотри что возвращает SetConsoleOutputCP. Если 0 - выведи/посмотри в дебаге что выдаст GetLastError()
>>992439Не устанавливаю никакие локали. Пробовал даже английскую ставить специально - хуй. Проверял, и SetConsoleOutputCP, и SetConsoleCP обе возвращают тру. Пробовал проверять кодировку GetConsoleCP, она говорит, что все норм и кодировка действительно 850.
>>992452Попробуй чисто для прикола создать буфер, заменить им текущий, а для оригинального - закрыть хэндл и удалить, и уже на новом буфере воткнуть новую кодировку.
>>992452Это зашитый текст в исходниках неправильно выводится (попробуй сменить кодировку исходников)? А если считать строку и вывести?
>>992470Короче, вот код:[CODE]void main(void){ HANDLE wHnd = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCP(850); SetConsoleOutputCP(850); CHAR_INFO consoleBuffer [256]; for(int i = 0; i < 256; i++) { consoleBuffer.Char.AsciiChar = i; consoleBuffer.Attributes = 15; } COORD charBufSize = {64, 4}; COORD characterPos = {0, 0}; SMALL_RECT writeArea = {0, 0, 64, 4}; WriteConsoleOutputA(wHnd, consoleBuffer, charBufSize, characterPos, &writeArea); COORD cursorPos = {0, 4}; SetConsoleCursorPosition(wHnd, cursorPos); printf("%d\n",GetConsoleCP()); printf("%d\n",GetConsoleOutputCP()); char str[80]; scanf("%79s", str); printf("%s\n", str); system("pause");}[/CODE]Пикрелейтед - результат его работы. Символы кириллицы при печати отображаются вопросами, но через WriteConsoleOutputA настойчиво печатаются именно они, какая бы кодировка не стояла. Пробовал даже греческую ставить - хуй там, кириллица.
>>992496setlocale(LC_ALL, "Russian");
>>992565И что это должно было поменять?
>>992496Что будет, если выводить коды символов а не сами символы (выводи вместо символов числа, проще говоря). И второе, какого хуя вонючий WinAPI делает в треде про кресты, это ж ЦЭ!
>>992854Тогда он выводит числа с 0 по 127 по порядку, затем идет -128, -127, -126 и так до -1. При любой кодировке.
>>992496У меня все норм(кроме ру ввода). Зачем тебе 850ср если есть юникод?
>>993063Ну вот почему у тебя норм, а у меня - нет? Я это хочу понять. В гугле вообще инфы нет.
>>993099Попробуй может шрифт в консоли поменять
какой смысл сидеть на qt если вакансии практически нет
>>993200Ну вообще на крестах нет смысла сидеть, если хочешь какой-то бабос получать.
>>993141как?
>>993141Действительно, после смены шрифта работает. Только в других шрифтах первые символы, которые заменяют непечатные (☺☻♥♦♣♠ и тд) отображаются квадратами. Какой шрифт у этого >>993063 ?
>>993342Consolas, похоже
Перекат >>993446 (OP)
>>988927>Подсветка илитная. У нее название есть?
>>998382Вангую что-то из base16
ХаюхайТакой вопрос: Почему для инстанцированных классов создаются только те методы, которые были использованы?