[Ответить в тред] Ответить в тред



[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 546 | 33 | 195
Назад Вниз Каталог Обновить

C++ #51 Аноним 25/04/17 Втр 00:47:16  979476  
Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/

Прошлый - >>970816 (OP) (OP)

Теги: кресты, cpp
Аноним 25/04/17 Втр 14:03:19  979789
s.png (8Кб, 161x123)
Есть кто в QT шарит? Есть две формы и два класса, mainwindow.ui и settingswondow.ui. Как их связать лучше? В MainWindow добавить поле-указатель и делать в конструкторе new SettingsWindow и посылать ему сигнал в слот show() когда нажата кнопка настроек? Это то что первое в голову пришло, может в Qt другая практика применяется.
А для хранения настроек насколько я понял есть QSettings, который хранит их на диске пока приложение закрыто.
Аноним 25/04/17 Втр 18:43:45  979986
>>979789
Возможно настройки лучше сделать из QDialog, и создавать и показывть его при нажатии кнопки, он будет блокировать основное окно.
А QSetting под виндой вообще хранит все в реестре, гораздо удобнее.
Аноним 25/04/17 Втр 21:24:36  980094
>>979476 (OP)
Может кто пояснить, как работать с функциями? Суть в том, что нужно настроить микроконтроллер следующим образом:

Есть четыре кнопки и 2х16 мониторчик. Надо вывести в первую строку название подменю, а во вторую - какое-то число, которое будет символизировать какой-то параметр настройки. Нажал ввод - вошло в функцию, можно выбирать кнопками "влево" и "вправо" параметр. Нажал отмену - вышел в главное меню, кнопками "влево" и "вправо" выбираешь подменю. Ну, например:

В меню три пункта: Звук, надпись выводимая, время очистки экрана. Нужно выбрать, в какой пункт зайти и выбрать там нужное значение. После выбора нужных значений контроллер начинает выдавать выбранный звук, надпись и через заданное время очищает экран. Скажу прямо: я студент, но не программист, хотя предмет такой есть. Преподу делал много программ, но такую хуйню один потянуть не могу, а он не хочет объяснять, как реализовать это.

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

Надеяться мне больше не на кого.
Аноним 25/04/17 Втр 21:45:06  980104
>>980094
Подходя к вопросу в лоб ты ничего хорошего не на микроконтролишь. И, судя по всему, ты себе довольно сложные задачи берешь для баловства с МК и изучения С - начинай с попроще чего-то.

Как наводка - гугли "Машина Состояний" (FSM), встретишь простые реализации, и от этого начинай фантазировать.

Если же требуется просто задачу решить а не учиться - то есть готовые либы для подобной задачи - на Хабре видел, ищи.
Аноним 25/04/17 Втр 21:50:45  980106
>>980104
Такую задачу поставил препод. Сделать подменю я могу, а вот несколько, да еще и с переключением, и с запоминанием результата - уже никак.
Поищу на Хабре тогда. Спасибо.
Аноним 25/04/17 Втр 22:42:08  980164
>>980094
> В меню три пункта: Звук, надпись выводимая, время очистки экрана.
> Ну, то есть, мелодия может быть третьей, надпись первой, а время очистки экрана - 3 секунды. Или наоборот - единицы и одна тройка. Или как угодно.
Неясно, надписи уже заданы и ты просто выбираешь номер надписи и что?
Аноним 26/04/17 Срд 00:40:56  980246
НУБОВОПРОСЫ
Двач, решил переписать часть прилаги на крестах и соснул невидимого и неосязаемого, только разобрался с new и delete, как stl-контейнеры:
http://cpp.sh/2bvp4

Вопросы:
1) Почему когда я кладуinsert() что-то в set, у этого чего-то вызывается деструктор?
2) Почему иногда деструктор вызывается больше раз, чем был вызван конструктор, при этом this указывает на другую область памяти?
3) Как правильно создавать объекты, которые я хочу положить в set? Через new и потом разыменовывать?


Аноним 26/04/17 Срд 00:52:07  980251
>>980094
что за МК юзаешь?
сам хочу попробовать
Аноним 26/04/17 Срд 01:55:27  980268
>>980246
Ты не можешь вставить в контейнер объект который создан на стеке. Вставляй указатель либо используй emplace вместо insert.
Аноним 26/04/17 Срд 02:31:13  980271
>>980268
>Ты не можешь вставить в контейнер объект который создан на стеке.
Может переместить temporary. Но он создал дестрактор, что отменило генерацию мув-констракторов.
Аноним 26/04/17 Срд 02:45:29  980272
>>979986
Вот ещё не понял: есть окно настроек, есть чекбоксы в менюбаре, может ещё что-то, в общем по всему приложению настройки могут измениться. Как это синхронизировать с QSettings? Делать глобальный класс настроек, который будут дёргать другие классы, а он в деструкторе скинет всё в QSettings?

Получается какая-то хуита:

connect(checkbox, &QAction::toggled, settings, &Settings::change())
потом в слоте
name = qobject_cast<QAction *>(QObject::sender())->text()

зато всё взаимодействие с настройками находится в одном классе
Аноним 26/04/17 Срд 03:02:37  980273
В /b никого нет, поэтому
Кто тут может объяснить, какого хуя наследники дружественных классов автоматически также не становятЬся дружественными?
Аноним 26/04/17 Срд 03:09:55  980275
>>980273
каталог-кун пишет:
современое ООП:
толпы быдла долбятся головами об стену невидя двери -
для них выпиливают люк.
Аноним 26/04/17 Срд 07:08:03  980297
>>980164
Надписи уже заданы. Но это по большому счету не важно.
Аноним 26/04/17 Срд 07:09:32  980298
>>980251
На проце PIC18F4520. Саму плату назвать не могу сейчас.
Аноним 26/04/17 Срд 14:54:26  980500
>>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
Аноним 26/04/17 Срд 15:09:54  980509
>>979476 (OP)
Мне нужно написать на Qt widget, имеющий древовидную структуру и поддерживающий несколько типов данных (для начала булевые, числа, строки, но потом будет что-то еще). Нужно что бы разные типы данных по разному представлялись визуально в этом дереве, т.е. булевый параметр представлял собой QCheckBox и т.д. Визуально это должно напоминать сам Qt редактор, а именно область настроек виджета. На какие классы обратить внимание? Я примерно представляю как такое сделать, но вангую, что мой способ это кал ебаный, наверное есть уже специальные классы под это дело. Подскажите, кто знает.
Аноним 26/04/17 Срд 15:55:03  980526
>>979476 (OP)
Куда делся ОП, который стихи писал? Сколько раз уже спрашивал - никто так и не ответил. Или это запретная тема?
Аноним 26/04/17 Срд 16:00:37  980534
Сап. Есть ли какие-нибудь гайды по распараллеливанию для чайников? Желательно что-нибудь попроще с копипасте-макросами и общими рекомендациями, никакой многопроцессорности и инлайн-вставок не нужно, просто хочу чтобы всё чуть быстрее работало.
Аноним 26/04/17 Срд 16:54:37  980563
>>980534
> гайды по распараллеливанию для чайников
Кончилось время, когда программирование было для чайников. Теперь пока не разберёшься досконально в модели памяти плюсов, можно даже не надеяться. Короче, быдло отсеяно из индустрии.
Аноним 26/04/17 Срд 19:21:44  980644
http://ideone.com/GSZNT3
Ананасы, что означает строчка с new(space){t}; ? Зачем там скобки, не пойму.
Аноним 26/04/17 Срд 19:34:17  980648
>>980644
placement new
Аноним 26/04/17 Срд 19:36:58  980649
>>980648
спасибо.
Аноним 26/04/17 Срд 19:48:43  980658
>>979789
Вот блин, в QDialog кнопка apply никаких сигналов не выдаёт, только QDialog::accepted после нажатия ok или cancel, придётся кучу костылей городить чтобы на кнопку apply сигнал повесить и применять изменения настроек на лету.
Аноним 26/04/17 Срд 20:30:28  980684
>>980563
Толсто
Аноним 26/04/17 Срд 20:31:20  980686
>>980684
>Толсто
А ты прогнись и расслабься - и совсем не толсто будет :3
Аноним 26/04/17 Срд 23:29:50  980812
Аноны посовейте кто-нибудь тему для дипломной работы, желательно такую которая реализуема лишь на С/С++
Аноним 26/04/17 Срд 23:36:13  980817
>>980812
>которая реализуема лишь на С/С++
Segfault
Аноним 26/04/17 Срд 23:44:16  980820
>>980686
Послушай совета бывалого человека
Аноним 26/04/17 Срд 23:44:20  980821
>>979476 (OP)
ОП-пик сегфолтнулся?
Аноним 27/04/17 Чтв 01:31:47  980867
Ещё проблема с 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 посылает один и тот же сигнал несколько раз?
Аноним 27/04/17 Чтв 01:48:28  980869
>>980867
Нашёл методом тыка:

disconnect(tabs_widget, &QTabWidget::tabCloseRequested, this, &closeTab);
tabs_widget->removeTab(index);
connect(tabs_widget, &QTabWidget::tabCloseRequested, this, &closeTab);

но такое решение не внушает уверенности
Аноним 27/04/17 Чтв 02:00:43  980873
Ну вообщем на андроиде из коробки в 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-макакич, пукич, какич - тупо блядь всё имеет из коробки. И вот тут меня накрывает нахуй завистью.

У красноглазого ублюдка который с этим сталкивается не первый раз наверное бы получилось всё быстрее, но на тот момент я вообще не был готов к такому повороту, пиздец.
Аноним 27/04/17 Чтв 08:19:24  980890
>>980873
Кулсторей
Аноним 27/04/17 Чтв 08:21:16  980891
>>980873
Сохранил даже
Аноним 27/04/17 Чтв 11:23:12  980929
>>980873
Я конечно не андоидщик, а js-боярин, но паста ахуенна.
Аноним 27/04/17 Чтв 11:33:07  980934
>>980873
Я тебе больше скажу - на андроиде вообще изкоробки ssl нету.
Аноним 27/04/17 Чтв 11:34:21  980935
>>980873
>0000000B
>0000000A
Шта, ты сошки под андроид msvc компилил?
Аноним 27/04/17 Чтв 12:06:01  980937
>>980873
бля, жиза.
Аноним 27/04/17 Чтв 13:01:09  980951
Есть простенький класс myString, хранящий в себе всего одну строку в качестве поля,
я хочу перегрузить для него оператор << , чтобы выводить эту строку,
сделал глобальную функцию перегрузки operator<<
friend для этого класса, но какого-то хуя я всё равно не могу обращаться к privat полям этого класса в глобальной функции

компилятор указывает на строку объявления глобальной функции в Global.h и выдает кучу ошибок, первая из которых
missing type specifier - int assumed. Note: C++ does not support default-int
какого хера, я вообще не передаю туда int, я передаю туда свой пользовательский класс

https://pastebin.com/TcF7dxCk

я реально не понимаю в чем дело, потому что я делаю всё в соответствии со всеми туториалами,
Аноним 27/04/17 Чтв 13:10:59  980956
>>980951
В хедерных объявлениях пиши полные имена типа (например std::ostream). И еще - не стоит использовать using namespace в хедерах.
Аноним 27/04/17 Чтв 13:39:41  980975
>>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 '&'

Аноним 27/04/17 Чтв 16:13:40  981048
58ad1bff8532f.jpg (24Кб, 328x177)
Почему первый вариант работает правильно, а второй - не работает? Хотя оба нормально компилируется. в v10 - цифры от 0 до 9, перемешиваю массив
Аноним 27/04/17 Чтв 16:21:10  981054
>>981048
А, все, понял. Ступил немножко.
Аноним 27/04/17 Чтв 16:56:35  981067
>>980975
Используй компилятор C++ либо линкуй бинарник с libstdc++
https://pastebin.com/bjFdaGja
Аноним 27/04/17 Чтв 19:59:21  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");
}
Аноним 27/04/17 Чтв 20:02:32  981127
>>980975
Покажи весь изменённый код.
Аноним 27/04/17 Чтв 20:03:19  981129
>>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");
}
Аноним 27/04/17 Чтв 20:38:25  981157
Как создать тему без оп-пика?
Аноним 27/04/17 Чтв 21:21:07  981179
>>981157
ОП-пик снесли, не знаю почему.

Возможно, вместе с предыдущим неудачным перекатом. В этой теме и предыдущей был один пик.
Аноним 27/04/17 Чтв 22:36:54  981230
>>980975
Попробуй так: https://pastebin.com/KNffk3wV
Но я сам ньюфаг с дивана. Только не забудь еще прописать определения для конструкторов в файле MyString.cpp.
Аноним 27/04/17 Чтв 22:52:56  981236
>>980975
А вообще не стоит использовать имена переменным, которые уже есть в стандартной библиотеке, типа string. Так что я бы написал что-то типа такого: https://pastebin.com/ZAbjiPB6
Ньюфаг-кун >>981179
Аноним 27/04/17 Чтв 23:08:15  981244
Аноны-крестовики, дайте ссылок на всякие разные простые, но качественные проекты, где может разобраться и ньюфаг, как я, чтобы почитать, как профессионалы пишут на С++, а то заебало писать говнокод, который я даже сам понимаю, что он говно.
Аноним 27/04/17 Чтв 23:17:10  981256
>>981244
Легко https://github.com/theanonym/libyoba-perl
Аноним 27/04/17 Чтв 23:24:35  981263
>>980951
В твоем коде ошибок нет https://ideone.com/e9V6fC ты где-то в другом месте обосрался.
Аноним 27/04/17 Чтв 23:36:00  981270
>>980975
https://pastebin.com/igQXunvC

Мой говнокод, студия15 пропустила. Добавлю свои 5 копеек.
Аноним 28/04/17 Птн 03:30:22  981357
А у меня сейчас QtCreator крашнулся при остановке дебаггера. И тут сегфолт, вот это номер!
Аноним 28/04/17 Птн 10:35:44  981412
Поцоны а какую IDE выбрать?

Clion vs MS Studio 15 Community vs Kdevelop(yoba.jpg)
Аноним 28/04/17 Птн 11:10:04  981418
>>981412
Clion или студия с решарпером. Только студия что без него, что тем более с ним будет куда тормознутее, так что выбор очевиден.
Аноним 28/04/17 Птн 12:07:22  981438
>>981412
Clion жрёт дохуя оперативы
Аноним 28/04/17 Птн 12:13:46  981442
>>981438
Студия тож
А kdevelop:
а) На шинде утрахаешься;
б) Не умеет нихуя, даже с цланговским парсером.
Аноним 28/04/17 Птн 14:18:06  981488
>>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 ЕБ ТВОЮ МАТЬ!)
Аноним 28/04/17 Птн 16:15:36  981522
Как в кт сделать такую маленькую кнопку сброса? В стандартных темах вроде нет. Это отдельный ресурс используется?
Аноним 28/04/17 Птн 17:06:16  981552
>>980534
Бамп
Аноним 28/04/17 Птн 17:08:44  981555
>>981552
Ищи гайды по OpenMP, хули ты как дурак-то. Там все на препроцессорных вставках как раз и делается.
Аноним 28/04/17 Птн 18:22:05  981579
>>981555
Все гайды сводятся к "вот сюда вот напишите #pragma omp parallel, а перед циклами можно писать #pragma omp for. А теперь, смотрите как ОГОГО, ЁБАНЫ В РОТ, printf("Hello, world!\n") ВЫВОДИТСЯ В 50 ПОТОКОВ!!!" Организацию данных, потокобезопасность - что это вообще, кому нужно? - нихуя нигде ни одного слова нет, ебитесь как хотите. Как я мапы и векторы в распараллеленом цикле менять то буду, ёпта, как данные модифицировать?! Чё, совсем мудак что ли, покажи мне, как я буду контейнеры в многопотоке использовать, ёпта!
Аноним 28/04/17 Птн 18:37:31  981590
Подскажите профайлер для крестов под прыщи. Пытаюсь использовать gprof, но он, сука, нихуя не выводит вообще, с какими бы флагами я не компилил.
Аноним 28/04/17 Птн 19:16:40  981597
>>981579
#pragma omp critical
вам что-нибудь говорит? Прекрасная конструкция. Аллах акбар!
Аноним 28/04/17 Птн 19:21:57  981600
>>980821
На оп-пике было петросянство, которое не понравилось моду (скрин из стрима Outlast с крестами).

Ебал.
Аноним 28/04/17 Птн 19:32:34  981606
>>980094
>а он не хочет объяснять, как реализовать это.
С вертушки въеби ему, это ненормальный препод.
>>980246
1) Потому что вставляется копия, а временное значение разрушается.
2) Потому что в строке 34 течёт память - ты создаёшь объект, который никогда не разрушится, так как ты проебал указатель на него.
3) insert(L()) нормально, ещё можно emplace(). В чём разница:
insert(L(zalupa));
emplace(zalupa).
С emplace может быть быстрее.
Аноним 28/04/17 Птн 20:08:12  981621
Два треда назад я тоже обосрался, кстати, и тогда я тоже запости второй тред с той же картинкой, но тогда картинка осталась на месте (мод спал и не удалил?).
Аноним 28/04/17 Птн 20:22:11  981627
>>981606
2) сказано верно, но к проблеме не относится.

Что такое "this указывает на другую область памяти" - я не понял.
Аноним 28/04/17 Птн 21:07:07  981642
Анончик помогай. Прошёл курс молодого программиста на http://academy.cppstudio.com/. Куда двигатся дальше?
Есть вроде страничка с литературой https://proglib.io/p/cpp-books/ . Но я хз куда там лезть. В начальный, средний или продвинутый уровень? Не хочется заного читать то что уже знаю, посоветуйте плиз
Аноним 29/04/17 Суб 00:48:46  981749
image.png (590Кб, 600x590)
>>981642
> Куда двигатся дальше?
Аноним 29/04/17 Суб 01:47:26  981761
>>981642
Не ебу, но подозреваю, что тебе нужна "Лучшая практика" из начального уровня и далее.
Аноним 29/04/17 Суб 10:23:58  981837
>>981749
Двачая
Аноним 29/04/17 Суб 10:24:56  981839
>>981412
>а какую IDE выбрать
emacs
Аноним 29/04/17 Суб 20:34:14  982143
Нужно затереть рандомные сектора на флешке. Причём сделать это нужно так, чтобы дата изменения файлов не изменилась. Как это сделать?
Аноним 29/04/17 Суб 21:15:23  982158
>>981642
А дальше - базовая архитектура компьютера, алгоритмы и структуры данных,
без знания этих дисциплин ты просто обезьяна
а с знанием этих дисциплин, ты обезьяна, которая их знает, но ты это поймешь только потом
Аноним 29/04/17 Суб 21:46:35  982167
Дайте простейший пример как поставить семафор чтобы только один тред имел доступ к участку кода (другие пускай морозятся), желательно на QT
Аноним 29/04/17 Суб 23:02:56  982191
Если завести массив указателей на (тип_нейм//класс_нейм), они автоматом инициализируются nullptr или останутся забиты мусором?
Аноним 29/04/17 Суб 23:42:43  982215
>>982191
Конструктор по умолчанию.
Аноним 29/04/17 Суб 23:45:41  982219
>>982167
Na
http://doc.qt.io/qt-5/qtcore-threads-semaphores-example.html
Аноним 29/04/17 Суб 23:50:48  982223
>>982191
А, массив указателей. В ideone 0.
Аноним 30/04/17 Вск 01:00:51  982245
canvas.png (88Кб, 800x450)
Есть желающие разработать собственную IDE? Интерфейс и логика на Qt, модель кода (навигация, автодополнение, подсветка, рефакторинг) через clang api. Конфиги в json, для плагинов и сложной работы с тектом как в vim можно вставить интерпретатор скриптов. Я тут прикинул, что один буду полгода возиться с этим.
Аноним 30/04/17 Вск 01:22:21  982248
>>982245
>Есть желающие разработать собственную IDE?
Нет.
Для сях есть куча годных ИДЕ.
Аноним 30/04/17 Вск 01:27:22  982249
>>982191
В функции - мусором, если не напишешь "= {}".
C++ не делает того, о чём его не просят. Ибо скорость. Исключение - глобальные переменные. Цена инициализации нулевая, так что в этом случае инициализация будет. У Майерса про это даже видео есть.
Аноним 30/04/17 Вск 02:24:19  982255
>>982143
Хуйня какая-то. Читай про FAT.
>>982223
В ideone undefined behaviour.
Аноним 30/04/17 Вск 03:12:12  982261
>>982249
> глобальные переменные. Цена инициализации нулевая
http://ideone.com/HbzDdv
Аноним 30/04/17 Вск 10:34:10  982293
1.png (108Кб, 1008x829)
>>982248
Не так уж много и у каждой свои недостатки. Сейчас единственный способ сделать всё под себя это писать плагины для вима или емакса, предварительно потратив полгода на то чтобы освоиться в редакторе, и в результате эти скрипты всё равно будут работать медленно.
Либо сделать свою IDE, шуструю и с красивым гуем на Qt, но один человек здесь не справится.
Аноним 30/04/17 Вск 10:51:47  982297
>>982293
Людям не понятна твоя мотивация. Даже если ты объяснишь нормально, то не факт, что с тобой согласятся.
Аноним 30/04/17 Вск 10:55:19  982298
>>982293
Проблема в том, что уже есть кдевелоп и кутикреэйтор, которые тоже на Qt и используют цланговский парсер. Чем тебя не устраивает вариант настроить их под себя или написать у ним плагины?
Аноним 30/04/17 Вск 11:35:26  982314
>>982293
>и в результате эти скрипты всё равно будут работать медленно
В емаксе режимы для крестов - это обертка к тому же clang-у.
>предварительно потратив полгода на то чтобы освоиться в редакторе
>Либо сделать свою IDE
Потратив минимум пару лет
Аноним 30/04/17 Вск 13:03:03  982341
>>979476 (OP)
Аноны, поясните, в чем смысл делать assert(this) в конструкторе класса?
Аноним 30/04/17 Вск 13:06:34  982344
Стикер (0Кб, 225x225)
>>982245
>полгода
чет кек
Так и пиши, не осилил емакс, памагите написать иде
Аноним 30/04/17 Вск 13:10:15  982348
>>982341
https://www.viva64.com/ru/b/0226/
Аноним 30/04/17 Вск 13:16:30  982352
>>982245
> Есть желающие разработать собственную IDE? Интерфейс и логика на Qt
Нет, только если интерфейс полностью на нативных компонентах Windows.
Аноним 30/04/17 Вск 13:19:32  982354
>>981357
Eclipse
Аноним 30/04/17 Вск 13:43:01  982364
>>982348
> Пока даже самые новые версии распространенных компиляторов (можно проверить с помощью сервиса GCC Explorer) не выполняют таких оптимизаций, так что пока "все работает", правда же?

Уже выполняют.
Аноним 30/04/17 Вск 16:10:21  982431
Есть шаблонный метод(хочу сделать что-то типо фабрики), который принимает два аргумента - тип класса и инициализирующее значение. В теле стоит свитч на тип класса, и в зависимости от типа, я создаю объект с переданным в функцию значением:(Yoba1 принимает char в конструкторе, а Yoba2 - int, например)

Yoba foo(int type, T val) {
switch(type) {
case 0 : return new Yoba1(val);
case 1 : return new Yoba2(val);
...
}

Но компилятор посылает меня нахуй сообщением, что не может найти соответствующий конструктор. Поиск такой ошибки можно как-то отложить на рантайм, ведь я сам себе гарантирую, что буду передавать только корректные аргументы.
Аноним 30/04/17 Вск 16:21:24  982434
>>982431
Где-то ты темнишь.
Аноним 30/04/17 Вск 16:31:09  982438
>>982431
Ну если кратко, то ты не можешь этот момент отложить. Да и в каком языке ты сможешь?
Аноним 30/04/17 Вск 16:41:27  982443
Как упоротому сишнику быстро перекатиться в крестовики? Что читать? И чтобы были расписаны все нюансы STL.
Аноним 30/04/17 Вск 16:42:56  982446
>>982293
Посмотрим, как ты будешь парсер кода писать. Вот тут то ты обосрешься в первый раз.
Посмотрим, как ты будешь тефакторинг писать, тут то ты и обосрешься во второй раз.
Посмотрим, как ты будешь нарсер систем сборки писать, тут то ты обосрешься в третий раз.
Неожиданно, но тут уже полные штаны говна. несите следующие ...
Аноним 30/04/17 Вск 16:53:56  982454
>>982431
Можешь попробовать конструктор на шаблонах сделать, перегружать готовые, в стандартном бросать исключение или ещё чё делать.
http://ideone.com/eD69WY

Но мне кажется, что это просто очередное место, где можно поиметь проблем и решение несколько неадекватное. Я бы постарался такого не делать оправдываю себя за говнокод ITT
Аноним 30/04/17 Вск 17:57:24  982483
>>982261
Мы о POD говорим. У любого объявленного класса вызывается конструктор, в твоём посте нет смысла.
>>982352
Куты можно настроить для использования нативных элементов, ЕМНИП.
>>982438
Во многих языках с динамической типизацией.
>>982443
Я сам только на сях писал, потом начал медленно писать программу под свои нужды, и многое узнал во время гугления и чтения cppreference.com, но это было небыстро.
>>982431
>Но компилятор посылает меня нахуй сообщением, что не может найти соответствующий конструктор.
1) Какие аргументы ты передаёшь в foo?
2) У тебя не может быть ошибка типизации в функции. В C++17 завезли if constexpr, в его ветвях могут быть ошибки, и инт типа нужно будет в аргументы тимплейта пихнуть.

А без (2) можно только тимплейты плодить.

http://ideone.com/qhaNjs - ошибки начнутся только тогда, когда ты вызовешь foo с таким типом, который несовместим хотя бы с одной версией Ёбы.
Аноним 30/04/17 Вск 17:59:29  982484
Олсо, пихни Ёбу в тимплейт, и сделай версию Ёбы аргументом оного.
Аноним 30/04/17 Вск 18:38:52  982520
Как можно просканировать строку из букв и заменить в ней некие буквы?
Аноним 30/04/17 Вск 18:54:30  982529
>>982520
В СТЛ такого нет. Цикл со свитчем.
Аноним 30/04/17 Вск 18:59:11  982534
>>982529
>со свитчем.
Дебил уровня /зк as is.
Аноним 30/04/17 Вск 19:06:00  982538
>>982534
Мне виднее.
Аноним 30/04/17 Вск 19:29:24  982562
>>982520
http://www.cplusplus.com/reference/regex/regex_replace/
Аноним 30/04/17 Вск 19:31:44  982566
>>982562
>>982529
Все, спасибо. Я уже сам додумался и запилил.
Аноним 30/04/17 Вск 19:34:20  982567
>>982364
Дело не столько в оптимизациях, сколько в том, что это UB. А всё, что вызывает UB, нужно обходить за триллион километров. UB - это самый серьёзный косяк, хуже, чем любая ошибка компиляции, чем любая неверно вбитая формула. Нужно всегда держать в голове: "Если я пишу код, который может привести к UB, то руки мне отрубить надо".
Аноним 30/04/17 Вск 19:50:10  982581
>>982483
>Во многих языках с динамической типизацией.
Я сам не особо знаком с такими языками, даже JS не трогал толком. Можно пример кода, где упоминается конструктор класса, которого не существует, и этот код работал?
Аноним 30/04/17 Вск 19:58:24  982590
>>982538
Угомонись, дегенерат.
Аноним 30/04/17 Вск 19:59:34  982591
>>982581
Код не будет работать, но выполнится до того места.
Аноним 30/04/17 Вск 20:04:40  982596
>>982591
Ну анон говорил, что оно просто не дойдёт до того места. Этот конструктор "лишний"
Аноним 30/04/17 Вск 21:54:43  982653
2ch, можно ли как-то посмотреть что компилятор автоматически генерирует для классов?
Аноним 30/04/17 Вск 23:27:58  982674
>>982596
Весь код инстанциированного тимплейта компилируется. Он не скомпилируется потому, что анализ программы - не задача компилятора.

Пример языка, в котором всё ок: PHP. Динамическая типизация, тип переменной может быть любой, соседние невыполняемые строки кода не проверяются.

Это элементарное отличие динамической типизации от статической.
>>982653
Гугли default constructors/destructors. Больше компилятор ничего не генерирует (не считая тимплейты функций, в которые передавался класс).
Аноним 30/04/17 Вск 23:39:43  982678
Поясните за LLVM на Windows.

Скачал релиз (4), установил, но почему-то нет кучи тулз, памятных мне по llvm какой-то старой ветки (3.4 кажется), LLC, LLI, llvm-dis и многих других). Что-то изменилось или на винду это все не завезли? Тогда (году в 2014) я качал какие-то билды с гитхаба, вроде официального на тот момент не было.
Аноним 30/04/17 Вск 23:53:13  982685
>>982678
Быть может, они отдельно?
Аноним 30/04/17 Вск 23:53:56  982686
>>982685
А где?
Аноним 01/05/17 Пнд 01:46:07  982720
>>982674
Copy/move assignment
Аноним 01/05/17 Пнд 02:04:56  982727
>>982158
С базовой архитектурой всё ок. Читал с 4-8 классы хуеву гору книг по микроархитектуре ЭВМ, немного знаю ассемблер.
Как смочь в качественную алгоритмизацию если у меня школы 9 классов и в математику я можно сказать не могу совсем? Придётся учить матан?
Аноним 01/05/17 Пнд 12:43:21  982806
Всем инклуде. Поясните за Qt. Где лучше скачать и где вычитать про настройку и использование?
Нетбук не сможет в VS, нормально ли будет с Qt?Мне только пилить проги уровня "жмякнул кнопку - вылезла картинка"
Аноним 01/05/17 Пнд 12:55:41  982809
>>982806
Можно и без VS, в Qt Creator-е сразу
На офф. сайте все есть
Аноним 01/05/17 Пнд 13:52:25  982868
Посоветуйте хороший компилятор для ньюфага
В ньюфаготреде посоветовали Visual Studio, какая версия лучше?
Аноним 01/05/17 Пнд 14:06:15  982880
>>982868
g++ бери. В VS своя версия компилятора, ещё привыкнешь. из IDE Clion норм
Аноним 01/05/17 Пнд 14:07:30  982882
Есть какой-то учебник, в котором описаны фичи из с++11/14?
Аноним 01/05/17 Пнд 14:16:29  982890
>>982882
https://github.com/AnthonyCalandra/modern-cpp-features
Аноним 01/05/17 Пнд 14:20:07  982896
>>982890
Очень годно. Прям то, что искал. Спасибо.
Аноним 01/05/17 Пнд 14:27:44  982900
Посоветуйте хороший компилятор для ньюфага
В ньюфаготреде посоветовали Visual Studio, какая версия лучше?
Аноним 01/05/17 Пнд 14:28:07  982902
Где можно почитать подробно про компиляцию, связывание, вот это вот всё. А то я вроде пишу довольно долго уже в IDE и не представляю вообще что там как происходит.
Аноним 01/05/17 Пнд 14:29:57  982903
>>982868
>>982900
Тебе ответили уже.
>какая версия лучше
Никакая версия не лучше. Разница лишь в том, что чем позднее версия - тем больше фич он поддерживает.
Так как ты будешь там запускать только хеллоуворлды - можешь скачивать любой компилятор любой версии.
Аноним 01/05/17 Пнд 15:57:12  982945
>>982902
Ахо, Ульман: Компиляторы
>>982868
Есть IDE и есть компилятор. Компилятор нужен не для редактирования кода, IDE нужна не для компилирования.

Visual Studio - это IDE с компилятором. Я считаю, что в ней слишком много кнопок для ньюфага.

Идеальный вариант - ideone. НИЧЕГО лишнего, ошибки подсвечиваются после попытки компиляции.

Ещё можно Qt Creator поставить, в нём интерфейс минималистичный.
Аноним 01/05/17 Пнд 15:57:39  982946
>>982945
ideone.com т.е.
Аноним 01/05/17 Пнд 16:30:03  982976
>>982945
>ideone
До первой ньюфажей ошибки. Тогда такой перец идёт в этот тред/форум или таки учится пользоваться дебаггером в своей IDE.
Аноним 01/05/17 Пнд 16:31:23  982978
>>982945
>Ахо, Ульман: Компиляторы
Толсто.
Аноним 01/05/17 Пнд 17:10:08  983012
unknown override specifier
как исправить эту ошибку,
она выскакивает на 2х классах, в которые содержат вложенные классы (в том числе 1 из них вложен в другой)
с чем вообще связана эта ошибка?
Аноним 01/05/17 Пнд 17:19:26  983023
>>982978
Чо толсто-то? Можно просто пропустить главы от лексического анализа до модулей, дальше там описано,
Аноним 01/05/17 Пнд 17:20:06  983024
>>983012
Либо код, либо сам ищи циклические зависимости.
Аноним 01/05/17 Пнд 17:31:55  983035
>>983024
Да я уже нашел, всё из-за сраных заголовочных файлов - в одном подключил один, потом туда же подключил другой, где первый уже подключен и так получается два раза подключение,
нигде нормального гайда не нашел как их подключать, чтобы не запутаться и что б всё работало
Аноним 01/05/17 Пнд 17:34:43  983039
>>983035
pragma once блет
Аноним 01/05/17 Пнд 17:51:08  983061
>>983039
а вот нихуя~
она там стояла везде где надо
Аноним 01/05/17 Пнд 18:28:47  983080
>>983061
вроде не все компиляторы ее поддерживают. может у тебя версия старая? пиши #ifndef HEADER #define HEADER
Аноним 02/05/17 Втр 18:56:18  983675
Есть класс с полями - одно из них - указатель на некий массив, другие поля - например числовых типов. При вызове деструктора требуется удалить тот массив, что по указателю. Надо ли вдобавок к этому писать код для удаления полей самого объекта этого класса, или эту часть компилятор сам сгенерирует?
Аноним 02/05/17 Втр 19:23:03  983688
>>983675
Как ты собрался удалять статические поля?
Аноним 02/05/17 Втр 19:59:40  983713
>>983688
Ну в смысле если объект был создан в динамической памяти, он работу по удалению его самого без дополнительных указаний сделает?
Аноним 02/05/17 Втр 20:13:23  983724
>>983713
Нет.
На каждый new делай delete, вот и всё.
Аноним 02/05/17 Втр 20:24:40  983730
Анон, страуса и уильямса осилил, полистал мейерса - очевидно. Думаю углубиться в буст, но глаза разбегаются от количества либ, с какой стороны к нему подойти?
Аноним 02/05/17 Втр 20:41:50  983745
Безымянный.jpg (161Кб, 690x636)
blob (80Кб, 360x219)
Сиплюсач, подскажи пожалуйста:
Как можно осуществить вывод двух и более связанных таблиц в один DataGridView в Visual C++?
БД - Access.
Искал - по плюсам ничего не нахожу, по шарпу информации как говна.
Пытался переписывать код с шарпа - ничего. Плюс еще надо в коллекции и коломсы прописывать связанные таблицы, а я хз что куда.
Подскажите пожалуйста, родные, последняя надежда.
Первый пик - моя прога.
Второй - то как это выглядит в моей голове и как должно будет быть. взято тут sernam(точка)ru/book_cbd.php?id=43
Аноним 02/05/17 Втр 22:48:31  983836
>>983675
shared_ptr<kokoko>(new kokoko(kukarek))

В наше время delete пишут только праздникам и только.
Аноним 02/05/17 Втр 23:03:36  983849
>>983836
Ну не знаю. Я лично в компьютерной графике вообще не юзаю никакие фичи. Код представляет из себя си с классами + std и иногда штуки из с++11, типа unsigned long long.
Аноним 02/05/17 Втр 23:26:45  983857
>>983675
А нафига тебе указатель на массив? Возьми просто std::vector, он сам удалит содержимое.
Если уж очень нужно динамически распределять память, заюзай std::unique_ptr\std::shared_ptr, они сами будут удалять содержимое при вызове их деструктора.
Аноним 02/05/17 Втр 23:28:34  983859
>>983724
Лол, 2017 год на дворе, если что. make_unique\make_shared и не нужны никакие delete.
Аноним 02/05/17 Втр 23:53:35  983867
>>983849
Держи всех в курсе. Писать голые new и delete (не в конструкторах и деструкторах) в 2017 - зашквар зашкварыч.
Аноним 03/05/17 Срд 00:42:39  983888
>>983867
>зашквар
Если ты с пацанами крутой современный стартап мутишь, где никакая высокопроизводительность не нужна, то можешь смело обёртками оборачивать другие обёртки.
Не вижу ничего плохого в том, чтобы использовать new/delete.
Аноним 03/05/17 Срд 01:26:32  983906
>>983888
Мне очень не нравится эта тенденция, когда тупое говно типа тебя все новое, что им влом учить объявляет выдумками неких хипстеров, а ты-то олдскульный пацан, пишешь высокопроизводительный код, как деды завещали.
Только хипстеров этих зовут Страуструп и Саттер. На, читай, https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r11-avoid-calling-new-and-delete-explicitly и просвещайся.

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

Все эти обертки инлайнятся и никакого влияния на производительность не дают. Есть просто тупые говнюки, которые вместо того, чтобы почитать последние статьи Страуструпа (вот уж стартаперы бугогого, самое время вставить шуточки про хипстеров и старбакспротив РЕАЛЬНЫХ ПАЦАНОВ типа тебя - мудака, ну да, куда Саттеру и Страуструпу до тебя), а есть люди, которые знают свой инструмент и как им пользоваться. Если ты думаешь, что голые указатели производительнее RAII-контейнеров, то ты тупой мудак, не знающий свой инструмент. А если ты так не думаешь, но все равно лепишь new и delete, то ты просто тупой мудак. Вот и все.
Аноним 03/05/17 Срд 09:10:03  983989
>>983888
Ну если стартап, который умрет в говнокоде, не дойдя до продакшена, то может быть. Память, сука такая, олдскульно течет.
А еще, когда мне говорят о производительности, я спрашиваю, а как ты профилируешь? Средний кодер оптимизирует хуже среднего компилятора.
Аноним 03/05/17 Срд 10:10:47  984008
>>983730
Бамп
Аноним 03/05/17 Срд 15:38:06  984164
>>983867
Так а разве он не о конструкторах и деструкторах говорит?

Я вот лично тестировал std::shared_ptr и собственную реализацию подсчёта ссылок с new и delete this. Мой вариант в полтора раза быстрее.
Аноним 03/05/17 Срд 15:48:26  984171
>>984164
Ну можешь предъявлять мелкомягким и получать оффер, ды.
Аноним 03/05/17 Срд 15:53:44  984174
Все видели этот прикол?

https://twitter.com/sebrose/status/858347156427636738
Аноним 03/05/17 Срд 15:54:55  984175
Господа, подскажите, пожалуйста, следующую вещь.

У меня имеется 2 массива.
Первый состоит из некоторого количества элементов определенного типа, допустим int. ArrayInt<int>
Второй является набором указателей на тип int, и каждый из его элементов хранит указатель на некий элемент первого массива. ArrayPInt<int>

В функцию вида void funcName(int & ref); передается некое значение с помощью второго массива, выглядит это так:

funcName (ArrayPInt);

, где i равен индексу заведомо существующего элемента массива

Вопрос состоит в следующем, будет ли это работать, если я хочу с помощью функции funcName изменять значения элементов исходного массива?

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

Аноним 03/05/17 Срд 15:56:07  984176
>>984175
а в самом важном-то сделал ошибку.
вот так правильно:

ArrayPInt<int*>
Аноним 03/05/17 Срд 15:56:09  984177
>>984171
А смысл? Различные решения, которые используются в shared_ptr, вполне имеют смысл. Стандарт обязывает его удовлетворять определённым требованиям. Если я в свою реализацию добавлю эти совершенно ненужные мне требования, думаю, я сильно отстану по скорости.

Но фишка-то в том, что тебе не всегда нужно то, что предлагает стандарт. А оверхед там просто огромный.
Аноним 03/05/17 Срд 15:56:55  984178
>>984176
Это не ошибка, просто вакаба ест звёздочки.
Аноним 03/05/17 Срд 16:04:57  984180
>>984178
и не только звездочки, лол, она мне еще съела вот что:
funcName(*ArrPInt)
Аноним 03/05/17 Срд 16:06:40  984181
>>984180
там [ i ] после ArrPInt

Короче, главное вопрос, при разыменовании указателя с помощью звездочки смогу ли я получить доступ к тому значению и изменить именно его?
Аноним 03/05/17 Срд 16:09:03  984182
>>984175
>что происходит при разыменовании указателя
>>984181
Результат разыменования — ссылка.
Аноним 03/05/17 Срд 16:16:45  984185
>>984182
отлично! Если я правильно понял, то в таком случае у меня все должно работать. Спасибо!
Аноним 03/05/17 Срд 16:32:31  984192
>>984177
Это хорошо, что вы всё понимаете. Всегда проще пользоваться стандартными решениями. В 99% случаев создание своего умного указателя не даст видимого ускорения.
Аноним 03/05/17 Срд 17:04:10  984202
>>984164
А твой вариант поддерживает многопоточность, например? Я shared_ptr в принципе не очень люблю, но это не значит, что нужно бежать использовать голые new и delete в коде.
Аноним 03/05/17 Срд 17:12:33  984206
>>984192
>В 99% случаев создание своего умного указателя не даст видимого ускорения.
Очень даже даст. Потому что shared_prt мультитредовый, и это сильно сказывается на производительности.
Аноним 03/05/17 Срд 18:07:44  984226
>>984206
Но разве я не прав про 99%?
Аноним 03/05/17 Срд 18:41:32  984245
>>984226
В 99% случаев shared_ptr между тредами не передается.
99% ресурсов имеют явного владельца, и shared_ptr не нужен.
Аноним 03/05/17 Срд 18:52:17  984250
https://pastebin.com/dxESjpyV

1>------ Сборка начата: проект: B, Конфигурация: Release Any CPU ------
B.vb(38,9): error BC36595: Метод не может одновременно содержать оператор "On Error Resume Next" и определение переменной, которая используется в лямбда-выражении или выражении запроса.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Что делать, аноны?
Аноним 03/05/17 Срд 18:55:31  984252
>>984250
>Что делать, аноны?
Учиться попадать в правильные треды?
Аноним 03/05/17 Срд 18:56:49  984253
>>984175
Если в функцию передаешь как int& ref, то получаешь доступ к исходному значению и всегда его можешь поменять. Если же в функцию передаешь как const int& ref то код меняющий переданное просто не скомпилится.
А вообще дизайн у тебя уж очень стремный, достаточно уменьшить размер первого массива и указатели в конце второго уже указывают в никуда.
Аноним 03/05/17 Срд 18:59:05  984255
>>984252
Я в детдом попал.
Аноним 03/05/17 Срд 19:08:03  984263
>>984202
Это ты про синхронизацию доступа? Но она мне не нужна, я никогда не пытаюсь получить доступ к подобным объектам из разных потоков.

Я и не говорю, что моя реализация лучше стандартной, но в моём случае мне не нужны некоторые специфические фичи стандартного варианта, которые его замедляют.
Аноним 03/05/17 Срд 19:29:35  984278
>>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% случаев не будет отрабатывать. А указатели на счетчиках ссылок в любом случае будут сосать, даже если вырезать оттуда поддержку многопоточности.
Аноним 03/05/17 Срд 20:06:26  984307
>>984278
>пиши копирующий сборщик мусора
Нахуя? Достаточно двух буферов/потоков. Из одного читаешь, в другой пишешь все дерево, потом их меняешь. Для батч-процессинга вообще глупо использовать умные указатели. Они нужны, например, для гуйни, там где данные мутабельные и персистентные. И на оверхед там насрать, потому что латенси и так миллисекунды.
Аноним 03/05/17 Срд 20:20:54  984316
>>984307
Ты в общем-то и описал простейший сборщик мусора.
В гуйне, как правило, есть дерево овнеров, чтобы не возникло циклических ссылок. Но вообще С++ для гуйни сильно на любителя, мелкий софт ушел в инет, а крупный софт типа КАД в любом случае легаси на легаси, и ты будешь делать так, как повелось в конкретной фирме.
Аноним 03/05/17 Срд 21:48:19  984389
>>984174
интерфейсы ведь заменяют абстрактные классы и множественное наследование, не?
Аноним 03/05/17 Срд 22:19:39  984408
Может показаться странным мой вопрос, но ладно.

У меня есть библиотечный класс. В нём есть поле float values[] , состоящее всегда из 3 элементов.
И у меня есть класс Vector3, в котором есть 3 поля x,y,z.
Можно как-то записать значения values[] из объекта первого класса в x,y,z объекта второго класса (кроме простого почленного присваивания, типа x = values[0], y=values[1]...)?
Я не знаю, с помощью там какого-нибудь memcpy или как-то еще?
Аноним 03/05/17 Срд 23:17:37  984455
>>984389
На этой картинке из твиттера тоже не совсем верно понимают, что такое интерфейс. Интерфейс - это совсем не абстрактный класс, нет. Интерфейс - это простое требование "класс обязан иметь такие-то методы".

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

В C++ подобный функционал без оверхеда должен реализовываться через SFINAE, но никак не через абстрактные классы.
Аноним 04/05/17 Чтв 00:23:50  984477
>>984408
Используй почленное присваивание, остальное может не работать на железе с другим padding'ом у полей, например. А так, memcpy можно заменить union'ом. Но не надо. Даже если у тебя там 20 полей будет. В С++, к сожалению, нет средств избавиться от копипасты при итерации полей структуры метапрограммированием.
Аноним 04/05/17 Чтв 01:08:31  984490
Я, конечно, очень сильно обнаглел, но как перевести строку в инт без атои(вижу точку аш в библиотеке, кудахчу про то, что пишу на плюсах а не на Си) и без подключение потоков стринговых. Должна ж быть просто какая-то функция.
Аноним 04/05/17 Чтв 01:11:59  984492
Мне кажется или писать всю логику QMainWindow это странно? Может QApplication наследовать? Хочу оставить в основном окне только слоты и сигналы относящиеся к гую
Аноним 04/05/17 Чтв 01:12:28  984493
>>984490
>вижу точку аш в библиотеке, кудахчу про то, что пишу на плюсах а не на Си
Выкини точку аш и добавь в начале букву эс как русская. h — это "эйч", быдло
Всё, теперь ты пишешь на C++.
Аноним 04/05/17 Чтв 01:40:46  984501
>>984408
Я бы порекомендовал std::copy , у него вполне может быть подходящая перегрузка, которая целиком через memcpy все скопипастит. Ну или вариант эту перегрузку самому написать.
Аноним 04/05/17 Чтв 01:44:00  984502
>>984490
http://en.cppreference.com/w/cpp/string/basic_string/stol
Аноним 04/05/17 Чтв 10:54:04  984600
>>984493
Ну знаешь же песенку.
Аш - водород
Цэ - углерод и так далее. Я вот как там произношу.
Аноним 04/05/17 Чтв 11:47:12  984623
>>984253
спасибо, и спасибо за критику.
Идея состоит в том, что первый массив остается неизменным после создания (меняются только значения его элементов).
Во втором массиве не обязательно содержатся указатели на все элементы первого, а лишь нужные в конкретный промежуток времени.
Делается это для того, чтобы каждый раз при поиске нужного элемента не было необходимости целиком пробегать первый массив, а лишь необходимую выборку, на которую указывает второй массив.
Может быть есть лучшие способы?
Аноним 04/05/17 Чтв 12:51:59  984666
>>984490
гугл, гугл мазарфакер, гуглить умеешь?
http://en.cppreference.com/w/cpp/string/basic_string/stol
Аноним 04/05/17 Чтв 13:35:11  984682
>>984493
"эс" - это s
c - это "си"
Аноним 04/05/17 Чтв 14:16:58  984699
>>984682
Я пародировал "аш", если кто не понял.
Аноним 05/05/17 Птн 00:57:02  984965
Народ, а почему многие main пишут на новой строке после int? Я что-то не нашёл этому логическое объяснение.
Аноним 05/05/17 Птн 01:17:14  984971
>>984600
Это латынь
Аноним 05/05/17 Птн 01:25:23  984974
>>984008
Мнение никогда не видевшего буст: не нужно в него углубляться, он огромен. Нужно искать в нём решения задач, с которыми не справляется STL.
>>984164
>Мой вариант в полтора раза быстрее.
В коде, состоящем только из созданий и удалений?
>>984408
memcpy непортабл. Краткий ответ - нет.
>>984965
Ни разу в жизни не видел. Разве что для того, чтобы имя читалось быстрее (нахуя?).
Аноним 05/05/17 Птн 01:59:52  984982
>>984965
параметры возвращаемые функции на одной строке, а имя на другой, так писали инженеры для облегчения поиска, пока в ит не вкатились всякие хипстеры пидарасы
Аноним 05/05/17 Птн 02:02:35  984986
>>984965
Я такое видел в очень старом Си.
Наверное годов 70ых.

Сейчас такое даже и не встречал.
Аноним 05/05/17 Птн 02:42:09  984993
>>984965
Кто все то, кто все то?! Мы тут одни с тобой епта.
Аноним 05/05/17 Птн 07:33:39  985019
>>984965
Так вроде как проще грепать названия функций из исходников. Что-то в этом роде.
Аноним 05/05/17 Птн 07:54:15  985021
>>984986
Ещё в 90-0х такой стиль активно использовался. А в оригинальном си вообще параметры под названием объявляли и тоже на новой строке ествественно
Аноним 05/05/17 Птн 10:41:00  985060
>>979476 (OP)
подскажите какое приложение можно написать что бы значительно поднять скилл по плюсам, сам плюсы знаю плохо.
Аноним 05/05/17 Птн 11:12:53  985068
>>985060
Компилятор, лол.
Аноним 05/05/17 Птн 11:20:59  985070
>>985068
А какие фреймворки учить что бы устроится c++ погромистом.
Аноним 05/05/17 Птн 11:22:07  985071
>>985070
https://github.com/fffaraz/awesome-cpp
Аноним 05/05/17 Птн 11:26:21  985074
>>985071
благодарствую
Аноним 05/05/17 Птн 14:38:40  985198
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(нельзя конвертировать инт в строку).
Почему так делать нельзя? Какого хуя компилятор за меня решает, какие типы я буду передавать? И как лучше, в таком случае, написать фабрику?
Аноним 05/05/17 Птн 14:47:00  985203
>>985198
>И как лучше, в таком случае, написать фабрику?
Писать её на другом языке. Тут уже был парень с таким же вопросом если это не ты опять
Аноним 05/05/17 Птн 15:43:18  985225
>>985198
Делай абстрактную фабрику фабрик и фасоль не забудь.
Аноним 05/05/17 Птн 15:43:41  985226
>>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);
}
}
};

Или как оно там пишется? Забыл уже с тех пор, как читал об этом.
Аноним 05/05/17 Птн 16:09:11  985256
>>985021
>> register
Фи
Аноним 05/05/17 Птн 19:11:23  985364
>>981590
Valgrind же.
Аноним 05/05/17 Птн 19:56:48  985388
>>985256
unregister
Аноним 05/05/17 Птн 20:49:36  985449
Кто-нибудь может мне рассказать секрет того, как можно поставить визуал студию в одну папку на одном вольюме? Чтобы она не создавала кучу папок в системном вольюме.
Аноним 05/05/17 Птн 20:50:38  985450
>>985449
Виртуалочка.
Аноним 05/05/17 Птн 21:26:41  985474
>>984965
потому, что это хороший кодстайл
Аноним 05/05/17 Птн 21:33:02  985481
>>985449
Можешь заморочиться и перенести все компоненты в одно удобное место, а вместо них подсунуть симлинки.
Аноним 05/05/17 Птн 21:38:05  985487
>>985481
Один раз заморочился, даже заработало, второй раз не хочу.
Аноним 05/05/17 Птн 21:47:02  985496
>>985487
Достаточно было написать один раз батник.
Аноним 06/05/17 Суб 01:14:44  985580
Столкнулся с тем что в цикле

int arr[256];
std::string s = text;
for(int i=0; i<s.size(); i++) {
f( arr );
}

s воспринимается как signed char, т.е. вместо какого-нибудь 252 оно принимает значение -4. Это нормально вообще?
Аноним 06/05/17 Суб 01:16:44  985582
>>985580

int arr[256];
std::string s = text;
for(int i=0; i<s.size(); i++) {
f( arr\[s\[i\]\] );
}

s\[i\]

fix
Аноним 06/05/17 Суб 01:47:55  985593
>>985580
char - это либо знаковый, либо беззнаковый тип. Если нужно что-то одно - кастуй или используй соотв. string (не помню, есть ли он).
Аноним 06/05/17 Суб 11:56:19  985723
>>985580
Короче, читай вот тут, а то двач залупается про какое-то слово из спам-листа
https://pastebin.com/rK0xafPX
Аноним 06/05/17 Суб 12:28:50  985744
Screenshot at 2[...].png (23Кб, 1008x829)
Вим и емакс скоро уйдут в прошлое
Аноним 06/05/17 Суб 12:37:56  985747
>>985744
Что это за параша?
Аноним 06/05/17 Суб 12:40:26  985749
>>985747
GTK, сер.
Аноним 06/05/17 Суб 13:15:24  985765
есть ли какой нибудь список идей который можно реализовать на c++ для новичков?
Аноним 06/05/17 Суб 13:51:03  985779
>>985765
Например, 4chan programming challenges
Аноним 06/05/17 Суб 14:23:29  985792
>>985747
Enterprise-ready IDE.
Аноним 06/05/17 Суб 15:11:32  985834
Screenshot at 2[...].png (175Кб, 686x822)
А ещё я вот такую замену QSettings запилил которая хранит данные в разных json файлах
Аноним 06/05/17 Суб 15:23:49  985845
>>985834
Чому бы не гонять protobuf или flatbuffers, которые позволяют генерировать схемы для настроек, пиздатая вещь, на самом деле.
Аноним 06/05/17 Суб 15:24:21  985847
>>985845
>> схемы сообщений
фикс
Аноним 06/05/17 Суб 15:37:39  985854
что нужно подключить что бы написать просто парсер какой нибудь странички
Аноним 06/05/17 Суб 15:45:42  985856
>>985854
boost::spirit
Аноним 06/05/17 Суб 16:05:23  985859
А если серьезно придётся использовать какой-нибудь libcurl и std::regex, но лучше сразу вкатиться в Qt и дрочить асинхронный QNetworkAccessManager
Аноним 06/05/17 Суб 16:16:45  985860
стоит ли вкатываться в qt если на плюсах еще толком ничего не писал
Аноним 06/05/17 Суб 16:31:41  985863
>>985860
Если понимаешь ООП то да.
Аноним 06/05/17 Суб 16:33:54  985867
>>985860
Ну а хули нет?! Только вот Шлее не читай, он пишет про устаревшие вещи, хотя, в целом, все, что там написано, применимо и по сей день.
Аноним 06/05/17 Суб 17:04:11  985881
>>985867
а можете подкинуть годных курсов или видосов, только не учебники, хочется сразу в практику
Аноним 06/05/17 Суб 17:07:14  985883
Двач, я новичок в программировании, я хочу использовать в своей коммерческой программе сторонние библиотеки под "3-clause BSD license", можешь подсказать как мне их использовать чтобы всё было без проблем?
Аноним 06/05/17 Суб 17:16:27  985886
>>985881
Смотри на их вики официальной, очень много примеров с объяснениями. Когда будешь устанавливать, можешь вытянть примеры.

http://wiki.qt.io/Main
Аноним 06/05/17 Суб 19:46:02  985961
Где описывается логика работы позиций считывания/записи в iostream? Стандарт читаю, но пока не нашёл.
Аноним 06/05/17 Суб 20:45:38  986009
>>985593
>>985723
Благодарю
Аноним 06/05/17 Суб 21:36:23  986044
Что-то я не въезжаю в иострим.

Как мне воплотить такую логику:
1 читаю файл с начала
2 почитал, скипнул (скипнуть могу только в точности за конец файла, размеры записанного известны)
3 если не eof, goto 2

КАК? peek не помогает - eof не обновляется.
Аноним 06/05/17 Суб 22:28:00  986080
>>986044
Попробуй get. peek просто смотрит на следующий символ, из потока его не забирает.
Аноним 06/05/17 Суб 22:43:11  986087
>>986080
Мне не нужен get, мне нужно только затестить.

Сделал так:
.seekg(0);
.read(...)
while(!.eof()) {
почитать
скипнуть
.read(...)
}

Нихера.
Аноним 06/05/17 Суб 22:44:18  986088
или .read не потребляет данные?
Аноним 06/05/17 Суб 22:50:06  986095
Хочу в кресты вкатится, есть пару вопросов про область применения
Правда ли, что в основном работа на плюсах заключается в поддержке легаси кода, а что то новое пишут с крайней неохотой? Для промышленного формошлепства есть шарп и жаба, для микроконтроллеров си, для веба всякие руби\питоны\го, биг дата в основном на питоне, что делают то?
Аноним 06/05/17 Суб 23:11:03  986110
>>986095
Почти везде есть язык, который справляется с задачей лучше, чем кресты.
Аноним 06/05/17 Суб 23:12:37  986111
>>986087
Не понимаю, чего ты пытаешься добиться.
Дефайн почитать, скипнуть.
Аноним 06/05/17 Суб 23:16:02  986115
>>986110
Ну так вопрос про область применения крестов. Получается, что смысла особого нет, если хочешь именно писать что то новое, а не поддерживать легаси?
Аноним 06/05/17 Суб 23:27:55  986122
>>986115
Выходит, что так. Вроде как и пишут на крестах разные крутые штуки, но если смотреть на вещи трезво и выбирать между бедным крестовым ынтырпрайзом и жырненьким Джава интерпрайзом, например, то выбор очевиден.
Аноним 06/05/17 Суб 23:30:45  986125
>>986111
Почитать: read, operator>>
Скипнуть: seekg
Аноним 06/05/17 Суб 23:42:31  986129
>>986125
Так тот код, который ты кинул, будет что-то делать. Сам-то что пытаешься сделать?
Аноним 07/05/17 Вск 01:24:49  986183
>>986129
Нет, не будет. eof() не робит.

Сейчас на ideone пульну.
Аноним 07/05/17 Вск 04:12:34  986207
Не буду ничего пулять, нашёл дебильную ошибку в своём говнокоде.
Аноним 07/05/17 Вск 11:23:14  986249
Screenshot at 2[...].png (50Кб, 1008x829)
Солорсхемы. Присутствует уникальная возможность поменять оформление всего редактора через параетр ui. Пока просто сделал MainWindow::setStyleSheet(), надо будет ещё повозиться со стилями элементов чтобы прилично выглядело.
Паттерны для подсветки собираюсь тоже в json вынести, чтобы можно было полностью настроить. Тот же Sublime например ни в какую не хочет операторы подсвечивать
Аноним 07/05/17 Вск 18:55:52  986463
Привет, плюсики. Так вышло, что мне нужно связать ООП и WinAPI. Например, некоторые методы класса мне нужно запускать в отдельном треде. Тред при этом создаётся через CreateThread() из <windows.h>, одним из параметром которого является указатель на функцию процедуру, а другой - void параметра. Другие методы нужно использовать в хуках которые SetWindowsHookEx, в частности для WH_KEYBOARD_LL. Как я понял, WinAPI ориентирован на процедурное программирование, и моя компилятор не позволяет мне скормить не статическую функцию-член в качестве адреса процедуры в CreateThread и SetWindowsHookEx. В случае с CreateThread я нашел выход костыль - сделать функцию static, а в качестве параметра void передавать объект класса, которому принадлежит функция. Однако, с SetWindowsHookEx() такая фишка не срабатывает. Отсюда у меня вопрос - как скормить этим двум WinAPI функциям процедуры-нестатические функции-
члены класса? Может быть есть какой нибудь грамотный подход к делегированию вызовов функций с аргументами или типа того?

inb4 ООП для пидоров, нахуй ООП, пиши в процедурном стиле - на данный момент интересует решение проблемы именно в контексте классов.
Аноним 07/05/17 Вск 18:57:13  986465
Бляхть, разметка. LPVOID параметр, а не void, указатель на void короче.
Аноним 07/05/17 Вск 20:45:24  986506
>>986463
Код дай. Сдалось нам эту поляну разбирать.
Аноним 07/05/17 Вск 22:45:09  986572
>>986463
Попробуй анализировать контекст, из которого вызывается процедура. Что знает процедура, когда она вызывается хуком? Сделай таблицу соответствия данных о контексте классам и в процедуре ищи класс в этой таблице, во время добавления хука добавляй данные в таблицу.

Олсо, что такое HOOKPROC? В дефайнах MinGW не нашёл. Это может быть метод COM?
Аноним 07/05/17 Вск 22:45:13  986573
>>981412
Имею опыт в Code::Blocks, Codelite и DevC++.
Первый мощен, но часто сильно тупит и подсказки говно.
Второй ничего так, но серьёзные проекты ему лучше не доверять.
Третий красив и аскетичен, но подсказок нет от слова совсем. Т.е. что-то есть, но хз.

До этого была студия и дотнет, можешь себе представить, как это всё больно.
Аноним 07/05/17 Вск 22:55:17  986582
>>986463
>Тред при этом создаётся через CreateThread()
пизда тебе

>>986463
>Может быть есть какой нибудь грамотный подход к делегированию вызовов функций с аргументами или типа того?
Обычно делают С-функцию коллбек, в которой как-либо получают указатель на экземпляр класса, и дергают его метод. Опционально коллбек объявляют френдом класса, чтобы дергать приватные методы.
Аноним 07/05/17 Вск 23:13:12  986593
>>986582
friend, ебаный насрал, я совсем про него забыл. Спасибо тебе.
>пизда тебе
Ды епта, лабораторная на WinAPI, простите-извините.
>>986572
Процедура для хука ничего не знает для выполнения необходимой задачи, потому что даже будучи статической функцией класса, this у меня всё равно не будет. Вот сейчас про friend мне напомнили, мб прикручу по уму, а то я уж отчаялся и в main захуярил всё.
Аноним 07/05/17 Вск 23:15:17  986597
1.PNG (9Кб, 973x176)
>>986572
>что такое HOOKPROC
Аноним 08/05/17 Пнд 00:04:07  986614
>>986593
>Процедура для хука ничего не знает для выполнения необходимой задачи

Не может быть. Неужели нету функций для получения информации о среде? О стеке вызовов, например.
Аноним 08/05/17 Пнд 01:12:30  986634
летчик.jpg (180Кб, 826x1024)
>>984455
> В C++ подобный функционал без оверхеда должен реализовываться через SFINAE, но никак не через абстрактные классы.
Скажи, что ты так пошутил. Или что SFINAE стоит применять для оптимизации уже существующего кода, использующего абстрактные классы как описание интерфейсов.
Если же ты прав, то зачем тогда вообще нужны абстрактные классы в крестах? Как внедрять зависимости, не используя их? Я испытываю когнитивный диссонанс, мой уютный мир умных указателей типа интерфейсов на объекты в куче рушится. Я ньюфаг, не бей если несу чушь.
Аноним 08/05/17 Пнд 03:28:01  986668
Дайте пример лабы с которой сюда приходят студентота.
Аноним 08/05/17 Пнд 03:32:02  986669
>>986668
введи и помножь две матрицы.
Аноним 08/05/17 Пнд 04:32:51  986673
>>979476 (OP)
Подскажите, плз:
есть строка (массив char) - "МАМА_ПАПА_ЕСЬЖИ"
Как мне проверить каждое слово (разделитель "_") с текстовым файлом?

Вот код, который проверяет одно слово
if (strcmp(str1, str2) == 0) {
printf("Совпало" %s, str1);
}
Аноним 08/05/17 Пнд 09:48:33  986706
>>986673
ты че спросить хотел?
проверить каждую букву на символ "_"?
Аноним 08/05/17 Пнд 10:31:35  986717
>>986668 -> >>986673
Аноним 08/05/17 Пнд 11:58:58  986729
>>986717
>>986669
То есть мою лабу будет е стыдно вгитхаб залить и на собеседованиях показыввать? Там что-то около 800 строк кода.
Аноним 08/05/17 Пнд 11:59:21  986730
>>986673
Распидорашиваешь строку на слова (strtok если ты решил угореть по С строкам, или std::istringstream + std::getline) и ищешь их в словаре. strcmp тебе ничем не поможет, если только твой словарь не вектор строк в котором ты ищешь вхождения линейным поиском.
Аноним 08/05/17 Пнд 12:06:03  986732
>>986729
Хуям на собеседовании будет интересно увидеть что ты пишешь также как они (например правильно разбиваешь код на модули, используешь нужные идиомы), то есть тебя не придется учить писать код. Сколько там у тебя строк и вообще что там написано имеет мало значения. Естественно, кроме случая какой-то твоей собственной уникальной разработки.
Аноним 08/05/17 Пнд 12:07:05  986735
>>986732
Ага, то есть стоит его красиво оформить?
Аноним 08/05/17 Пнд 12:16:44  986738
>>986735
Имелась ввиду хуйня типа https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md/
Естественно это не высеченная в камне истина, у парней на собеседовании могут быть противоположные мнения по не которым пунктам, и они даже могут оказаться правы.
Аноним 08/05/17 Пнд 13:10:22  986768
>>979476 (OP)
Сап, анон. Помоги разобраться в том, почему цикл в этом примере написан именно так: http://ru.cppreference.com/w/cpp/algorithm/adjacent_find

>for (next != last; ++next, ++first)
Для чего в блоке инициализации написано сравнения? Что это дает?
Каким образом условие ++next может стать ложным? Если, например, итератор end() контейнера можно интерпретировать как false, то для произвольного диапазона это неверно (допустим, если диапазон выбран в середине контейнера).
Аноним 08/05/17 Пнд 13:17:46  986770
>>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
}
}`

Ничего, скоро добавят концепты, с ними будет возможно то же самое.
Аноним 08/05/17 Пнд 13:26:45  986775
>>986768
>ru
Не читай ru-сайты, а то постоянно будешь иметь подобные проблемы. Они забыли ; в начале условия.

Читни на ангельском, там всё правильно: http://en.cppreference.com/w/cpp/algorithm/adjacent_find
Аноним 08/05/17 Пнд 14:07:44  986788
>>986770
каталог-кун пишет:

современое ООП:
толпы быдла долбятся головами об стену невидя двери - для них выпиливают люк.

Аноним 08/05/17 Пнд 14:17:08  986792
>>986788
Я не знаю, к чему ты это сказал, но иногда бывает нужно знать, что переданный объект точно-точно содержит такой-то метод. А наследование в данном случае будет костылем.
Аноним 08/05/17 Пнд 14:19:44  986793
>>984455
>Абстрактный класс предполагает наличие таблицы виртуальных функций
но ведь в стандарте про vtable ничего нет, и компиляторы свободны имплементировать нахождение виртуальных функций как хотят.
Аноним 08/05/17 Пнд 14:21:15  986794
>>986793
так что все вопросы к компиляторам
Аноним 08/05/17 Пнд 14:21:28  986795
>>986793
Тогда просто "Абстрактный класс предполагает, что все его методы виртуальные". Всё равно это не всегда то, что нужно.
Аноним 08/05/17 Пнд 14:56:49  986807
>>979476 (OP)
Обычно экземпляр шаблона создается с указанием типов или значений в треугольных скобках. Каким образом компилятор здесь https://ideone.com/BDfVA6 вычисляет длину массива и подставляет ее вместо N? Как вообще создается экземпляр шаблона без треугольных скобок, как выводятся типы, как подставляются значения и почему она встают на правильные места?
Аноним 08/05/17 Пнд 15:24:08  986813
>>986807
Длина статического массива, который создаётся на стеке, известна компилятору с самого начала. Он же в 13-й строке откуда-то узнаёт размер? Вот и при передаче в функцию знает.

Типы в угловых скобках указывать не нужно, потому что есть единственный вариант типа и размера. А значит, компилятор и так знает, что нужно подставить туда.
Аноним 08/05/17 Пнд 15:26:38  986815
>>986807
>вообще создается экземпляр шаблона без треугольных скобок
Выводится тип переданного аргумента (гугли template deduction).
>как выводятся типы
По типу выражения в правой части.
>почему она встают на правильные места?
И почему же он ошибаться-то должен? Подставляет по типу, логично жи.
Аноним 08/05/17 Пнд 17:23:20  986879
>>986792
Есть мнение, что наследование в принципе всегда является костылём. Недаром в этих ваших новомодных Rust и Go их заменили интерфейсами и трейтами.
Аноним 08/05/17 Пнд 18:05:53  986912
>>986879
У наследования есть пара преимуществ, когда нужно вынести общий код, а публично доступным для всех его делать не нужно. Но это мне нужно было довольно редко, часто наследование выглядит каким-то натянутым. Как будто кто-то очень хотел прикрутить наследование, но не совсем понимал, зачем оно в этом случае нужно.
Аноним 08/05/17 Пнд 18:21:36  986922
Help.
Возможна ли активация ToolTip'a без наведения на заданный
Button - мыши.
##########
ToolTip1->SetToolTip(button1, "Text1");
При наведении мыши на button1 - Открывает ToolTip1 с Text1.
Возможна ли активация ToolTip1 без наведения на button мыши?
К примеру, добавляю метод Button1_Click по нажатию на который высвечиваются все заданные ранее ToolTip'ы.
Аноним 08/05/17 Пнд 18:36:30  986929
>>986879
Вот этот вроде не совсем дебил, и мнение не совсем говно - что удивительно для параши уровня /зк.
Аноним 09/05/17 Втр 12:09:58  987333
>>986922
Не знаю с какой технологией ты работаешь, но у tooltip'а нет свойства/поля isVisible или метода типа show()/enable()?
Аноним 09/05/17 Втр 12:14:54  987340
>>986912
Я тебе больше скажу: оно так вообще везде.
Во всех новых языках наследование давно заменили композицией.
Аноним 09/05/17 Втр 13:31:13  987419
>>987340
Проблема композиции в том, что внутренние классы должны торчать полями и методами наружу, чтобы их мог использовать внешний класс. Особенно это хреново, когда кроме как внешнему классу, никому больше эти методы и не нужны.
Аноним 09/05/17 Втр 14:02:45  987446
>>987419
Это везде решается модулями, но для плюсов это пока что больная тема, да.
Аноним 09/05/17 Втр 14:08:21  987457
Стикер (255Кб, 469x500)
Может кому пригодится. Не отображался текст в консоли MS Visual C++ 6. Перерыл весь интернет, програмистские форумы, ничего не помогало, и вот сегодня, о чудо, нашел в Ответах.Мэйл.ру рабочее решение. Удивляюсь с этого сайта, не раз уже выручает, там рили ответы на все вопросы вселенной, хех.
Подключение кириллицы в консоль С++
https://pastebin.com/Pc5jM2VG
Залил на пастебин для удоства.
Аноним 09/05/17 Втр 14:33:20  987513
>>987457
Лучше бы ОС поставил.
Аноним 09/05/17 Втр 14:46:52  987544
>>987457
не знаю можно ли в c++ 6 так, но попробуй
setlocale(LC_ALL, "");
Аноним 09/05/17 Втр 14:51:19  987559
>>987457
Хорошая попытка, mail.ru, но нет.
Аноним 09/05/17 Втр 15:14:09  987585
Стикер (127Кб, 228x512)
>>987544
>не знаю можно ли в c++ 6 так, но попробуй
>setlocale(LC_ALL, "");
В том то и дело, 99% советов, которых я нашел в интернете, были про это но это не помогло(см. пик).
>>987559
Ты и так на нем сидишь.
>>987513
ОС? Сижу на семерке, а на ней виртуалка ХР(а в ней висуал с++ 6).
Аноним 09/05/17 Втр 15:16:38  987586
>>987585
Оно еще и гатарипидор.
Это ВСЕ обьясняет.
Аноним 09/05/17 Втр 15:24:58  987600
>>987589
>титосов
>наруту
И даже эти черви-пидоры все еще лучше гатариговна.
Аноним 09/05/17 Втр 15:46:00  987619
Как конвертнуть сорцы в 866-кодировку?
Аноним 09/05/17 Втр 15:48:00  987620
>>987619
Иди уже нахуй, гатаридебил.
Аноним 09/05/17 Втр 15:49:53  987622
>>987585
А че это у нас локали выкинули уже что ли из стандарта?!
http://ideone.com/t0jzwb
Аноним 09/05/17 Втр 16:12:00  987628
>>987623
>На хуе
>вазелин
Сразу видно - ОПЫТ
Аноним 09/05/17 Втр 16:43:29  987641
>>987446
>модулями
Цпп макакичам даже нормального способа переключения кодировки твывода в терминал не завезли, модулями ему косяки композиции прикрывать видите-ли надо.
Аноним 09/05/17 Втр 16:53:41  987649
733654867.jpg (189Кб, 853x693)
Сап, аноны. Пытаюсь, значит, выучить C++ за 21 день, дошел до очередных заданий, и сразу же возникло непонимание. Следовал указаниям, но у меня не запускается и не компилируется. Может, проблема в компиляторе? Использую Dev cpp. И еще вопрос - у нас главный файл use.cpp, к нему подключается my.h, как компьютер поймет, что нужный код еще в my.cpp есть?
Аноним 09/05/17 Втр 17:12:06  987655
>>987649
Проблема в std_lib_facilities.h обычно, не инклудь его.
Аноним 09/05/17 Втр 17:13:16  987656
>>987649
Обычно каждый исходный файл компилируется отдельно в объектный код (что типа g++ -o user.o -c user.cpp), дальше линкеру скармливаются все файлы с объектным кодом и он уже и собирает готовый исполняемый бинарник (g++ -o myapp user.o my.o)
Аноним 09/05/17 Втр 17:18:13  987657
>>987655
Я его и не использую.

>>987656
Что-то как-то сложна. И, в любом случае, они у меня не копилируются (или не собираются, я хз, в эти тонкости еще не вникал) никаким образом.
Аноним 09/05/17 Втр 17:23:38  987660
Здрасьте. Я тут учусь помаленьку и у меня возник вопрос. Вот код:
https://pastebin.com/JcFdXneJ

Это задание на наследование и прочее. И вот возникает странная ошибка из-за делегирования конструкторов и значений по-умолчанию. Если вы скомпилируете, то увидите, что цепочка, в итоге, приводит к обнулению переменных w,d,h. При том weight, которая находится всего на один уровень выше - задаётся корректно.

Что это и как это исправить?

Ну, в смысле, вон, если убрать комментарий в конструкторе UberBox, то, несомненно, я получу нужные значения. Но мне бы хотелось воспользоваться предыдущими конструкторами.
Аноним 09/05/17 Втр 17:30:47  987662
>>987649
> Dev cpp
Это IDE, а не компилятор, проверь, возможно ты скачал версию без компилятора. То что нужно два файла компьютер не поймет никак. Обычно за этим следит IDE - ты создаешь проект, добавляешь в него файлы, а IDE уже скармливает компилятору все файлы в проекте. Посмотри, возможно стоит Qt Creator использовать - потом сразу в Qt вкатишься.
Аноним 09/05/17 Втр 17:40:00  987666
>>987660
Используй для Box дефолтный (без параметров) конструктор. А вообще наследование ромбом хреновая идея.
Аноним 09/05/17 Втр 17:40:05  987667
>>987660
>обнулению переменных w,d,h
Они не обнуляются, а изначально равны 0 - в твоем классе есть два набора переменных w,d,h. Один ты изменяешь, а второй нулевой.
У тебя РОМБ КЛАССИЧЕСКИЙ. Енджой йор МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ.
Аноним 09/05/17 Втр 17:40:52  987668
>>987662
А почему Qt Creator, а не какую-нибудь Visual Studio? И нет, версия у меня точно с компилятором, и я эти файлы и через проект создавал, и по отдельности - никак не работает.
Аноним 09/05/17 Втр 17:45:01  987671
>>987666
>>987667

Такс. А ромбы нельзя? У нас в примере с лекции было такое, там про virtual, собственно, только сказали.

За просто Box спасибо
Аноним 09/05/17 Втр 17:46:33  987672
>>987671
Ромб можно, но только в С++. В нормальном обществе за ромбы бьют якорем по яйцам.
Аноним 09/05/17 Втр 17:48:07  987673
>>987668
В студии специфическая версия плюсов, и она несколько жирнее креатора (с учетом фреймворка). Так-то студия это оптимальный вариант, если тебя не смущают нюансы. И ты на используешь операционную систему виндоуз.
Аноним 09/05/17 Втр 17:49:17  987675
>>987672
Ну, в моей любимой джавочке это в принципе невозможно.

Такс. А как мне избавиться от второго набора переменных сохранив ромб (лол. Никак, да?)? Или как мне ,однозначно, обратиться к тому набору переменных который инициализировал тот конструктор?
Аноним 09/05/17 Втр 17:51:10  987680
>>987675
мдя. Чому так сложно? Не хочу заниматься памятью:\
Аноним 09/05/17 Втр 17:53:15  987682
>>987675
Избавиться нельзя. Обращаться указывая нужный класс, что-то типа BoxWeight::w = 77;
Аноним 09/05/17 Втр 17:59:27  987684
>>987682
понятно. Спасибо большое.

А.. Как сделать приведение типа, скажем, от BoxNamed к Box? Я не совсем понимаю как это именно написать, видимо, косячу с самим синтаксисом перегрузки оператора. Оно то предлагает сделать его void, то говорит, что "'Box' is an inaccessible base of 'BoxNamed'"
Аноним 09/05/17 Втр 18:03:35  987686
>>987675
virtual наследование
Аноним 09/05/17 Втр 18:05:45  987687
>>987686
Оно там есть. Куда его ещё запихать?
Аноним 09/05/17 Втр 18:23:50  987695
>>987687
https://isocpp.org/wiki/faq/multiple-inheritance#virtual-inheritance-where
Аноним 09/05/17 Втр 19:08:15  987715
Поясните, зачем вкатыватся в кресты, если на на них пишется только легаси?
Аноним 09/05/17 Втр 19:11:09  987719
>>987715
Потому, что этого легаси ещё лет на 10 хватит. А в странах третьего мира и на все 30. Но офк глупо ограничиваться этой еботекой с указателями(не в обиду, господа)
Аноним 09/05/17 Втр 19:21:13  987725
>>987695
не понимаю. А в чём разница того что уже есть с тем, что в статье?
Аноним 09/05/17 Втр 19:31:59  987728
>>987715
Это универсальный переносимый язык с промышленным стандартом и довольно небольшим оверхедом.
Легаси это не про языки, легаси это про подход к разработке (куча горизонтальных зависимостей, протекшие абстракции, отсутствие тестов).
Аноним 09/05/17 Втр 19:40:06  987735
>>987684
Если у тебя приведение типов происходит снаружи (а не в имплементации класса) то наследование нужно делать публичным.
Аноним 09/05/17 Втр 19:49:24  987742
f47973b3e18d027[...].png (17Кб, 742x127)
>>987735
О... Да. Это помогло. Теперь я немного лучше понимаю табличку и вообще, что именно та ошибка имела ввиду. Спасибо.
Аноним 09/05/17 Втр 20:01:50  987754
>>987728
Легаси это именно что совокупность говна мамонта.

Помню где-то скрин видел с форума, где был запечатлен пост защитника VB6 относительно свежей даты, который рассказывал что ЯП это тебе не залупа и в нём новых косяков не появляется со временем, то есть он не стареет эх, а ведь он даже не подозревал насколько неправ.
Аноним 09/05/17 Втр 23:51:07  987892
В win32 приложении я повесил hook через SetWindowsHookEx на клавиатуру. Больше приложение не делает ничего, только ждёт нажатия на клаву с последующим обработчиком события. Как теперь поддерживать процесс в рабочем состоянии чтоб не вышел и способном принимать сообщения через хук? Желательно не что нибудь типа while (true);
Аноним 10/05/17 Срд 00:13:20  987914
>>987892
Ладно, с этим вроде понял, для хука нужна прослушка сообщений через GetMessage(). Теперь другой вопрос: если я закончил прослушивать нажатия клавиш, как мне из другого треда послать в основной сообщение WM_QUIT? Всякие PostMessage, PostQuitMessage, судя по описанию на msdn, посылают сообщение в своём треде.
В наличии есть id обоих тредов а может еще что то, о пользе чего я не знаю
Аноним 10/05/17 Срд 00:33:48  987927
>>987914
Всё, проблема решена. PostThreadMessage в совокупности с GetMessage работает пэрэекарасно.
Аноним 10/05/17 Срд 03:28:25  987954
>>979476 (OP)
https://pastebin.com/NMEs8XK3 - где ошибка в моей рекурсии?
Всегда 1 в ответе
Аноним 10/05/17 Срд 09:27:38  988008
>>985364
Это немного не то. И думает он по полтора часа. Да и с гпрофом я уже разобрался - надо было просто статически слинковать.
Аноним 10/05/17 Срд 09:32:24  988011
>>981597
Ботлнек получается и в итоге все работает медленнее чем в однопотоке. Если б на каждый поток можно было завести по пайпу, в который скидывался бы результат, а потом по окончании их работы эти пайпы собрирались бы в контейнер, может и вышло что-нибудь.
Аноним 10/05/17 Срд 13:01:30  988106
ребят, помогите пожалуйста, это интерполяционный метод Ньютона, и я не могу понять, где моя ошибка. После десятого dx на экран выводятся слишком большие значения. Проблема, по моему скромному мнению, находится в рекурсивной функции, помогите пожалуйста. Не ругайтесь насчет ненужной переменной в функции, я знаю она не нужна. https://pastebin.com/edit/fQ50AM5R
Аноним 10/05/17 Срд 14:39:13  988190
Сейчас будет тупой вопрос, как называются переменные в классах? Гугление только усугубило проблему, мне кажется что у них десятки наименований которые все обозначают тоже самое, говорит ли что-то об этом стандарт?
Аноним 10/05/17 Срд 15:18:09  988219
>>988190
>Сейчас будет тупой вопрос, как называются переменные в классах? Гугление только усугубило проблему, мне кажется что у них десятки наименований которые все обозначают тоже самое, говорит ли что-то об этом стандарт?
ЧЛЕНЫ! ИХ МОЖНО ДЕРГАТЬ!

— Смотри, я… вот у нас здесь функций много… ой-ой… функций много, понимаешь? Смотри, функции, они тебе спать мешают. А я вот, давай вот я функции прямо в структуре объявлю, и они все в структуре будут, и мы их методами назовем, слышишь, членами назовем? И тебе тогда спать, ой, спать будет хорошо. Давай? Ну, куда им ещё, ихнее место-то тока здесь. А структуру - классом.
— Ты можешь просто помолчать, всё, пиздец?!
— А еще в классе два члена сделаем, конструктор и деструктор, и они сами собой эти члены дергаться будут. Вот так, дерг, дерг.
— Заебал, блядь!
— А еще у класса родитель может быть, а этот класс тогда дочка. И у дочки тогда все члены родителя будут, ну они же наследуются, ну. Понимаешь, братишка. У дочки члены родителя будут. И их тоже дергать можно будет.
— Ёб твою мать! Блядь! Иди отсюда на хуй, блядь!
— Но не все члены дергать можно будет, будут публичные члены, которые все могут дергать, вот ты мой публичный член, например, можешь подергать.
— Сука, блядь, пидорас, блядь!
— А другой член только родитель сможет дергать, и больше никто. А еще будут члены, которые только родитель и дочка дергать смогут. Братишка, братишка... Дочка у родителя член дергать сможет, понимаешь, братишка.
— Иди под струю, сука! Мойся!
— А еще можно будет класс-дружочек сделать. И тогда этот дружочек все членики у своего дружочка дергать сможет.
— А блядь на хуй! Ну, иди сюда сука, блядь! Дерьмо собачье, блядь! А блядь!
— А у дочки много родителей будет, и все членики родителей у дочки тогда будут. Их можно будет дергать и другим не мешать дергать, понимаешь?
— Мудак, блядь, ну ты мудак. Я тебя сейчас убью нахуй, а тебя, бля, сейчас убью, блядь!
Аноним 10/05/17 Срд 15:33:50  988241
>>988106
>https://pastebin.com/edit/fQ50AM5R
To get to the requested page you must first login.

>После десятого dx на экран выводятся слишком большие значения.
Возможно где-то переполняется переменная. (или становится равной нулю)
Или, со знаком что-то происходит.
Убедись, что у тебя все переменные double.

Запиши все значения всех переменных на каждой итерации в лог.
Аноним 10/05/17 Срд 15:37:20  988244
>>988190
Называешь как хочешь. Я предпочитаю _field_name или _fieldName, подчёркивание отделяет приватные от публичных в автодополнении и всяких списках в IDE если такие есть.
Аноним 10/05/17 Срд 15:52:04  988257
>>987954
Тип sum.
Аноним 10/05/17 Срд 15:57:37  988259
Сап, крестовый, как записать объект в файл чтобы потом его прочитать?
Аноним 10/05/17 Срд 16:01:12  988263
>>988259
toJson
fromJson
Аноним 10/05/17 Срд 16:03:47  988265
>>988259
Если в объекте нет ничего виртуального и нет указателей: file.write((char*)object,sizeof(object));

А по-взрослому это делается так: для кажлого объекта надо определить operator>> и operator<<, в которых ты ручками пишешь порядок вывода всех членов, и делаешь их френдами объектов, если есть приват-члены.
https://isocpp.org/wiki/faq/serialization
Аноним 10/05/17 Срд 17:00:05  988288
>>988263
Какие библиотеки норм для json?
>>988265
При такой записи ( не по-взрослому ) ошибка при чтении и гроб-гроб
Аноним 10/05/17 Срд 17:02:17  988289
>>988288
>>988265
Только я делал (char *)&object
Аноним 10/05/17 Срд 17:11:40  988295
>>988288
https://github.com/theanonym/yoba-json
Аноним 10/05/17 Срд 18:00:45  988316
>>988289
Нутыпонел.
>>988288
>При такой записи ( не по-взрослому ) ошибка при чтении и гроб-гроб
??? Оберни в trycatch.
Аноним 10/05/17 Срд 18:33:27  988336
>>988288
https://github.com/fffaraz/awesome-cpp#json
Аноним 10/05/17 Срд 20:16:17  988371
>>988241
https://pastebin.com/fQ50AM5R
>https://pastebin.com/edit/fQ50AM5R
верхняя ссылка должна работать
Аноним 10/05/17 Срд 20:48:37  988390
>>988316
Попробовал я с JSON в Qt разобраться. Записать-то я записываю. Но по клику мышки можно записать хоть сколько json-ов. Как мне их теперь читать-то?
Аноним 10/05/17 Срд 21:09:48  988396
5b211ce564ff61b[...].jpg (167Кб, 800x600)
Здаров, хочу вкатиться в сетевое(серверное) программирование... Мол сокеты беркли, высокопроизводительные сервера, вся хуйня, желательно кросплатформенными примерами на бустеА не много ли я хочу?. Подскажите плз что почитать?
Аноним 11/05/17 Чтв 06:26:00  988564
>>988396
>> высокопроизводительные
>> бусте

Проиграл
Аноним 11/05/17 Чтв 10:31:44  988653
>>988564
А что по твоему более производительнее??
Аноним 11/05/17 Чтв 10:33:23  988655
по интерполяции ньютона есть кто? https://pastebin.com/fQ50AM5R
Аноним 11/05/17 Чтв 11:22:41  988677
>>988655
>по интерполяции ньютона есть кто?
Я тебе вроде уже отвечал.
Чтобы ты все расчеты залогировал.

Ты на листике считать можешь эту интерполяцию?
Аноним 11/05/17 Чтв 11:31:21  988683
>>988653
epoll
libevent
да libuv тот же производительнее будет, другое дело, что все это ЦЭ
Аноним 11/05/17 Чтв 11:39:38  988686
Как найти работу в ДС на 170+ штук?
Аноним 11/05/17 Чтв 11:47:45  988694
>>988390
Ты походу с самим json не разобрался, неправильно ты пишешь в файл, батенька.
Тебе нужно создать массив объектов в json.
Либо:
[
{
//good1
},
{
//good2
}
]

Либо:
{
"goods": [
{
//good1
}
]
}

А ты пишешь в json:
{
"price": 10,
"count": 50
...
}
{
"price": 50
}
что валидным json не является.
Аноним 11/05/17 Чтв 12:00:46  988705
jsonRead.png (33Кб, 513x219)
>>988390
А вообще, как-то так, в случае, если в jsonе у тебя структура вида:
{
"goods": [
{
//good1
}
]
}
Аноним 11/05/17 Чтв 14:24:49  988802
>>988683
спс анон
Аноним 11/05/17 Чтв 17:22:02  988881
В чем разница между
const int size = 7;
int i_array[size];
и
int i_array[7];
Аноним 11/05/17 Чтв 18:55:38  988919
>>988705
Ничего непонимаю.
Это С++ на пикрелейтед?
Почему не макароны, как у анона которому ты отвечаешь?

И что за подсветка синтаксиса, и откуда?
Аноним 11/05/17 Чтв 19:12:03  988927
>>988919
Да, С++, QtCreator.
Подсветка илитная.
Аноним 11/05/17 Чтв 19:42:49  988937
>>988881
В проекте лаба_1 нивчем.
Аноним 11/05/17 Чтв 19:49:53  988940
>>988937
А в проекте yoba_kursach_v_2.4.3_FINAL?
мимо уровнем чуть выше чем лаба1, но отличий не вижу
Аноним 11/05/17 Чтв 19:54:11  988944
>>988940
Представь себе:
1) что этот волшебное число 7 у тебя по всему проекту в 256 местах.
2) что у тебя в одном хедере написано конст нормально имя переменной, четко понятное размер чего это и зачем = 7

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

В каком случае уебок соснул?
Аноним 11/05/17 Чтв 20:11:05  988947
>>988944
Зачем я должен помогать уёбку не соснуть?
Аноним 11/05/17 Чтв 20:21:52  988953
>>988947
А что ты сам можешь задержаться на этом месте дольше месяца ты не рассматриваешь как вариант, я полагаю? За такой код тебя пидарнет нахуй сеньер помидор после первого же код ревью, быдлокодеров типо тебя в любой шараге можно набрать за 100$ пучек. А пояснять инвестору почему сменить количество рабочих часов в дне займет 3 месяца и еще 2 месяца багтестинга ему не захочется.
Аноним 12/05/17 Птн 01:57:52  989083
Граф без весов можно хранить списком смежности. А как СПИСКОМ хранить взвешенный граф?
Аноним 12/05/17 Птн 03:47:47  989100
>>989083
Список пар смежностей и весов, лол.
Аноним 12/05/17 Птн 10:14:43  989142
сложно ли найти работу на плюсах? Какие обычно требования к с++ погромисту, что нужно уметь.
Аноним 12/05/17 Птн 10:24:15  989146
Антоны, прогавшие под Android NDK, поделитесь впечатлениями. Много ли проблем с адаптацией кода под разные архитектуры? Много ли гемора с дебагом? Как на андроиде дела с STL? Что менее проблемно, писать NativeActivity (всё приложение написано на C/C++ и из него, возможно, иногда вызываются методы Java) или дёргать функции либы из простого Java-wrapper-а (конкретно, функцию, рендерящую сцену - 1 раз за кадр)? Какие подводные камни?
Аноним 12/05/17 Птн 11:13:13  989154
>>989142
Знать фишечки новых стандартов, понимать наследование\тимплиты\эксепшены. Знать алгоритмы хоть немного, заглядывать в многопоточку.
Аноним 12/05/17 Птн 11:21:26  989157
Использует ли тут кто Makefile? Я что-то ни черта понять не могу, что делают шаблонных правила? Можете объяснить своими словами?
Аноним 12/05/17 Птн 13:12:29  989207
Анон, помоги разобраться в ошибках. Есть такой код: https://ideone.com/Mq06WN

Функция check принимает ссылку на строку с информацией об исключении. Операторы ++ и -- вызывают ее в самом начале. При компиляции этих операторов возникла ошибка "Нелья преобразовать const char * в std::string&", связанная с передачей ASCII-строки. Чтобы избавиться от этой ошибки, пришлось явно создавать объект std::string. Почему возникла эта ошибка?
Аноним 12/05/17 Птн 13:24:05  989209
>>989157
>Использует ли тут кто Makefile?
Я.
> Я что-то ни черта понять не могу, что делают шаблонных правила? Можете объяснить своими словами?
Ну работают по шаблону)))00

В большинстве случаев лезть в шаблонные правила не нужно, они и так есть неявно. Достаточно переопределить всякие CPPFLAGS, CXXFLAGS, LDLIBS и указать зависимости бинарников от объектных файлов. А остальные зависимости находить с помощью компилятора и подключать *.d-файлы.

Ах, да. Самое главное — не забыть написать
LINK.o=$(LINK.cc)
Аноним 12/05/17 Птн 13:28:13  989214
>>989207
>"Нелья преобразовать const char * в std::string&"
Каждый божий день такой вопрос, блеать.
Потому что неконстантные ссылки не биндятся к временным объектам.
> Чтобы избавиться от этой ошибки, пришлось явно создавать объект std::string
Если компилятор пропустил что у тебя в 15-й строке, то это значит, что у тебя MSVC.
Аноним 12/05/17 Птн 14:33:08  989248
1.png (8Кб, 370x396)
2.png (1Кб, 305x122)
>>979476 (OP)
Сап
Нужно заменить первый столбец матрицы "x" на столбец матрицы "у",выполнить функцию, вернуть все обратно, заменить второй столбец, функцию и все эти действия до конца матрицы "x".
Как заменить конкретный столбец? А то у меня вообще все заменяются
https://pastebin.com/C3D8yjeP

Аноним 12/05/17 Птн 14:55:27  989255
>>979476 (OP)
За сколько времени можно вкатитсья в кресты, если буду хуярить по 4-5 часов в день?
Аноним 12/05/17 Птн 14:57:46  989258
>>989255
Зависит от того, чем раньше занимался и для чего хочешь использовать C++
Аноним 12/05/17 Птн 15:13:55  989269
>>989248
https://github.com/sosachbot/cppthreadhat/wiki#Памятка-нюфагу
> Лабы идут на хуй
Аноним 12/05/17 Птн 15:18:06  989271
>>989269
Это не лаба.
А смысл тогда этих тредов? Вверху один срач, и я не думаю, что мой вопрос требует много времени для ответа более опытных кодеров.
Аноним 12/05/17 Птн 15:22:25  989275
>>989271
>>989248
Двумерный массив - это может быть указатель на массив чисел, он же двойной указатель он же указатель на массив указателей, каждый из которых является адресом первого элемента массива.
Короче, тебе надо сделать что то типа такого:
for (auto i = 0;i<2;i++)
X=Y;//Или Y[0], если у тебя Y - не одномерный массив, а двумерный.
Аноним 12/05/17 Птн 15:22:56  989277
>>989275
проебался. в цикле X конечно же.
Аноним 12/05/17 Птн 15:24:00  989279
>>989275
Ах блять, разметка. В цикле X квадратная скобочка открывается))) i квадратная скопочка закриваеться))0.
Аноним 12/05/17 Птн 15:27:05  989283
>>989275
Спасибо, вот что получилось, если интересно.
https://pastebin.com/U36eqSWY
Аноним 12/05/17 Птн 15:51:20  989299
>>989258
Ничем вкатываюсь с нуля. Пока правда не думал чем буду заниматься. Хотел с лаб начать, потом уже определиться что хочу на нем делать.
Аноним 12/05/17 Птн 15:54:59  989306
>>989299
>с лаб
Щас местный контингент тебя нахуй пошлет.
Аноним 12/05/17 Птн 16:11:42  989319
>>989306
А с чего тогда лучше начать?
Аноним 12/05/17 Птн 16:13:44  989322
>>989146
STL - это такая вещь, которую, грубо говоря, можно хоть из другого компилятора взять. Если есть компилятор, есть и STL.
Аноним 12/05/17 Птн 16:13:47  989323
1.png (7Кб, 346x392)
2.png (5Кб, 584x163)
3.png (25Кб, 807x508)
4.png (4Кб, 398x145)
>>989248
Бляя, все через пизду, еще один тупой вопрос, не ругайте. Замена работает правильно но ебучий детерминант считается правильно только для первой замены, дальше все по пизде едет.
При втором вызове функции det_x присваивается значение первого детерминанта, а не единица, как исправить?
Аноним 12/05/17 Птн 16:14:41  989325
Майки добавили модули!
Аноним 12/05/17 Птн 16:15:55  989327
>>989299
Имхо, учить плюсы с нуля плохая идея. Я сам начинал в универе с плюсов, потом продолжил на С#, и только потом совсем недавно вернулся на кресты. Тебе тоже посоветую начать с шарпа, потому что на шарпе ты сразу же будешь учиться именно программировать, а не ебать мозги с особенностями синтаксиса и компиляции крестов. А потом, когда на шарпе разберешься с ООП, паттернами программирования, многопоточностью/асинхронность, сетевым программированием и почувствуешь, что шарпа тебе недостаточно для твоих целей, тогда можешь осваивать синтаксис и тонкости крестов. А так, бросясь с нуля сразу в кресты, ты только усложнишь своё обучение программированию и повысишь риск того, что тебе оно надоест/станет слишком сложным для освоения.

Вообще, шарп тоже неплохой язык и на нем можно делать деньги, правда делают на нём в основном не то, что на крестах.
Аноним 12/05/17 Птн 16:16:42  989330
>>989319
Ну с лаб и начинай.
Есть много литературы по плюсам с теорией и самостоятельными заданиями, их и решай
Аноним 12/05/17 Птн 16:18:56  989331
>>989207
Потому что "строка" - это куча символов где-то с нулём в конце, а std::string - объект известного размера, и компилятор не обязан создавать string из "строки" (ака строчный литерал).
Аноним 12/05/17 Птн 16:19:14  989332
>>989323
Вот мой полный говнокод
https://pastebin.com/TSsnwiXs
Аноним 12/05/17 Птн 16:39:35  989342
>>989325
В 2015ом?
https://www.google.ru/search?q=c%2B%2B+microsoft+modules
Аноним 12/05/17 Птн 16:40:19  989343
>>989342
a, ok.
Аноним 12/05/17 Птн 17:28:55  989362
>>989327
Вот тут мнения почему-то расходятся. Одни говорят, что надо с чего-то сложного начинать типа крестов. Другие наоборот - с простого.
Аноним 12/05/17 Птн 17:44:42  989368
>>989322
Имелась в виду не только библиотека шаблонов контейнеров, а вообще вся плюсовая (C++11 хотя бы) библиотека: <thread>, <atomic>, <chrono> и т. д.
https://developer.android.com/ndk/guides/cpp-support.html
Тут, например, про LLVM libc++ они пишут, что она у них нихрена не стабильная. И вообще предлагают выбирать из нескольких плюсовых библиотек. Значит у всех них, вероятно, есть какие-то проблемы, иначе они бы написали "юзайте вот эту библиотеку и всё будет нормально".
Аноним 12/05/17 Птн 17:52:47  989372
>>989362
>Одни говорят, что надо с чего-то сложного начинать типа крестов.
Покажи мне эту суку.
Аноним 12/05/17 Птн 18:00:54  989376
>>989372
Это я :3
Аноним 12/05/17 Птн 18:54:17  989417
>>989327
Начинать программировать с ооп макарон и тонны ключевых слов? Пускай учит Perl/Python
Аноним 12/05/17 Птн 19:07:58  989434
>>989327
Учу плюсы с нового года (медленно и неторопливо), все никак понять не могу, почему кодеры используют char* вместо string?
Аноним 12/05/17 Птн 19:29:19  989460
>>989376
Головка от хуя.
>>989434
ЕМНИП, потому, что, если надо передать часть строки, надо копировать её. Олсо, некоторым больше нравится набор str*(), чем методы string, а результат всё равно один - байтоёбство и хорошая скорость.

В C++17 завезли string view, вот тут и заживём (что мешало сделать const string-конструкторы, которые ничего не меняют?).
Аноним 12/05/17 Птн 19:32:28  989462
>>989434
Тому что стринг это не базвый тип. Не у всех подключено. Даже если ты в своем проектике и пользуешься каким-либо библиотечным стрингом, всеравно любые связи с другими либами будут через чар указатель, тошо каждый мудак мечтает написать свою реализацию стринги.
Аноним 12/05/17 Птн 19:36:15  989465
>>989434
Без надобности тратится процессорное время и память на создание и удаление объекта string.
Аноним 12/05/17 Птн 19:37:49  989467
>>989462
>всеравно любые связи с другими либами будут через чар указатель, тошо каждый мудак мечтает написать свою реализацию стринги.
Из чего делать связи со статическими либами - пофигу (хоть через std::set, хоть через vector, хоть через аллаха), а вот с динамическими могут быть проблемы.
Аноним 12/05/17 Птн 20:37:07  989522
здравствуйте, посоветуйте как мне научиться создавать рекурсивные функции для расчета всяких сложных вещей типа полинома Ньютона когда там одно на другое накладывается?
Аноним 12/05/17 Птн 20:43:18  989529
>>989434
обратная совместимость с C.
Аноним 12/05/17 Птн 20:51:52  989539
>>989522
нахуй иди пёс
Аноним 12/05/17 Птн 21:34:22  989587
>>989522
С такой прямотой тебе секс никогда не обломится.
Аноним 12/05/17 Птн 21:48:13  989603
>>989539
неверно, пошел ТЫ
>>989587
обломится, я знаю, это тебе он не обломится

но все же помощь с пониманием рекурсии и формул ньютона была бы замечательной
Аноним 12/05/17 Птн 21:58:29  989611
>>989522
Так рекурсия или полиномы? Судя по всему, нет даже базовых навыков? Сходи на Степик, найди курс Шеня. Через месяц инварианты начнёшь видеть даже в небе.
Ну или Кормена почитай, например.
Аноним 12/05/17 Птн 22:00:46  989619
>>989603
>была бы замечательной
Это верно.
Жаль что ты её не получишь.
Аноним 12/05/17 Птн 22:49:50  989654
>>989611
у меня есть базовое понимание рекурсии, но я не знаю как превратить полином в рекурсию
Аноним 12/05/17 Птн 23:08:00  989668
Как создать load-time DLL в visual studio? Проект win32 → статическая библиотека, это оно? Формат у load-time .Lib или тоже .dll должен быть? И как её потом в приложение добавить? С runtime dll проще - просто в коде вызываешь WinAPI'шный LoadLibrary или аналог на любой другой ОСи указываешь путь к файлу .dll, а с run-time что? На msdn для load-time только описание, а для runtime описание и пример.
Аноним 12/05/17 Птн 23:37:43  989685
>>989654
Я бы тебе даже ответил, но я не знаю, что ты спрашиваешь. Начни с википедии.
Аноним 12/05/17 Птн 23:42:38  989688
>>989668
Библиотека может быть статической и динамической. Динамическая библиотека может быть прописана в зависимостях PE, а может подгружаться кодом.

Для того, чтобы динама подгрузилась сама, тебе не нужно ничего делать в коде.
http://stackoverflow.com/questions/32562242/static-and-dynamic-linking-in-visual-studio
Дальше сам гугли.
Аноним 13/05/17 Суб 00:43:53  989746
Когда код C++ компилируется, какие данные об именах можно найти в исполняемом файле в машинном коде? Есть ли там имена классов и их членов, переменных, функций, пространств имён, структур и их членов? Имена исходных файлов и хэдеров?
Аноним 13/05/17 Суб 00:48:22  989748
>>989746
Только если компилируешь с дебуг-информацией.
Аноним 13/05/17 Суб 00:54:34  989753
>>989748
Это параметр на картинке?
С одним из параметров есть информация об именах всего мною перечисленная, а при другом - вообще никакой информации?
Аноним 13/05/17 Суб 00:54:55  989754
1.PNG (37Кб, 844x603)
>>989753
Картинку забыл, блять.
Аноним 13/05/17 Суб 00:57:36  989757
>>989753
Информацию о том, что ты использовал, можно выудить косвенно, но намеренно вписывать её, если вот эта шняга выключена, компилятор не будет.
Аноним 13/05/17 Суб 01:00:43  989760
>>989757
Я спрашиваю, потому что читал про использование уточнение декларации extern "C" { }, но не особо въехал в причины необходимости. На msdn'е что то говорится, что компилятор C++ имена функций и переменных являются не то виртуальными не то еще какими то, а в C, мол, такого нет, и чтоб C мог подхватывать функции из хэдеров C++ нужно их вот так объявлять. Так во что или как тогда компилируются имена переменных и функций в крестах и на си?
Аноним 13/05/17 Суб 01:01:31  989762
>>989760
что компилятор C++ имена функций и переменных делает не то виртуальными, не то еще какими*
Аноним 13/05/17 Суб 01:12:23  989770
>>989760
Так бы и сказал, что либу пишешь. В выводе компилятора будут все extern-переменные с именами и все extern-функции с именами. С extern C они могут быть использованы программой, собранной любым компилятором (аргументы не включены в описание процедур, вроде), без него - только с тем компилятором, который шифрует имена таким же образом (гугли name mangling, это кодирование аргументов функций).

В статических либах это неважно.
Аноним 13/05/17 Суб 01:13:38  989771
>>989331
>и компилятор не обязан создавать string из "строки" (ака строчный литерал).
Обязан, см. 5-й конструктор http://en.cppreference.com/w/cpp/string/basic_string/basic_string
Зачем ты лезешь с умозрительными рассуждениями? Проследуй в ньюфаг-тред.
Аноним 13/05/17 Суб 01:13:45  989772
Типы возвращаемых значений тоже включены в код, вроде. Это всё нужно для overload-ов и аргументов-тимплейтов.
Аноним 13/05/17 Суб 01:15:30  989773
>>989771
Тупой ебанат. Прочти сообщение, на которое я отвечал - чувак хочет передавать строчный литерал вместо std::string без создания std::string.

Нассал тебе в ушко.
Аноним 13/05/17 Суб 01:15:45  989774
>>989772
overload-ов по возвращаемому значению в C++ нет.
Аноним 13/05/17 Суб 01:16:41  989775
>>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
Аноним 13/05/17 Суб 01:18:28  989778
>>989773
Тупой ебанат. Компилятор создаёт временный std::string, если ты передашь const char[N] в месте аргумента std::string.

А теперь вернись в php-тред.
Аноним 13/05/17 Суб 01:27:45  989791
>>989775
>>989770
Благодарю, разобрался. Да, mangling.
Аноним 13/05/17 Суб 15:52:24  989956
P5IZUtxMFlc.jpg (15Кб, 200x267)
>>979476 (OP)
Посоны, дайте наиболее правильный и простой пример заполнения динамического массива с задаваемой пользователем размерностью рандомными ДЕЙСТВИТЕЛЬНЫМИ числами.
Аноним 13/05/17 Суб 15:56:58  989958
>>989956
С каким распределением?
Аноним 13/05/17 Суб 16:11:38  989965
>>989958
new
Аноним 13/05/17 Суб 16:13:18  989967
>>989965
Идиот, блядь.
Аноним 13/05/17 Суб 16:31:09  989976
>>989956
>ДЕЙСТВИТЕЛЬНЫМИ числами
Современная вычислительная техника все еще находится на приблизительно уровне каменного века, и работать с действительными числами не умеет. Еще даже вроде 128-битных регистров нет. Жди появления процессоров с бесконечным размером регистров.
Аноним 13/05/17 Суб 17:24:53  989998
>>989965
KEK
Создаёшь указатель
float* floatArray = new float[n]
на массив чисел типа float (или double для большей точности). n - переменная, определяемая пользователем, необязательно константная. А если хочешь поведения как у vector, но создавай структуру-обёртку типа
struct myVector<T>
{
}
и определяй в нём методы push, pop, reserve. Думаю, в STL'овских векторах там либо те же new-delete, либо через WinAPI VirtualAlloc какой нибудь.
Аноним 13/05/17 Суб 17:27:54  990000
>>989958
А на самом деле, rand() какое распределение имеет?
Аноним 13/05/17 Суб 17:31:02  990002
>>990000
> 2k17
> rand()
Аноним 13/05/17 Суб 19:42:39  990067
Помогите, пожалуйста, нюфане.
Как правильно иницировать цикл от нажатия определенной клавиши до нажатия другой?
Если я допустим делаю
char y = getch();
while (y = 'y'){}
То как я смогу изменить значение y, не заставляя цикл остановиться?
Аноним 13/05/17 Суб 19:48:18  990073
>>990067
>getch
Ололо.
Аноним 13/05/17 Суб 20:00:44  990077
>>990067
kbhit
Аноним 13/05/17 Суб 20:04:32  990080
>>990077
Но он же начинает работу, когда нажата любая кнопка, а мне определенная нужна.
Аноним 13/05/17 Суб 20:08:05  990081
>>990080
а ты ебани while (kbhit()=='y') или VK_Y, что он там возвращает
Аноним 13/05/17 Суб 20:08:39  990083
>>990000
>>989956
http://en.cppreference.com/w/cpp/numeric/random/
>>990067
>То как я смогу изменить значение y, не заставляя цикл остановиться?
Ты либо хочешь бесконечный цикл, либо ты перепутал = с ==, либо тебе нужно сохранять y во вторую переменную, менять и восстанавливать в конце тела цикла из копии.
Аноним 13/05/17 Суб 20:11:10  990086
image.png (21Кб, 465x136)
>>990083
>http://en.cppreference.com/w/cpp/numeric/random/
Аноним 13/05/17 Суб 20:14:40  990089
>>990086
Сорян. http://en.cppreference.com/w/cpp/header/random
Аноним 13/05/17 Суб 20:15:36  990091
>>990089
http://en.cppreference.com/w/cpp/numeric/random
Аноним 13/05/17 Суб 20:18:22  990093
>>990083
Как я могу в цикле изменить значение у, не заставляя его остановиться.
Ведь если я сделаю
char y = getch();
while(y == 'y'){
/*/
y = getch();}
он выполнит цикл однажды, а затем будет ждать другого нажатия кнопки.
Аноним 13/05/17 Суб 20:24:50  990094
>>990086
Убери слеш последний в адресе.
Аноним 13/05/17 Суб 20:25:42  990095
>>990094
Давно убрал. Просто я люблю тыкать людей в их незначительные ошибки.
Аноним 13/05/17 Суб 22:24:18  990140
>>990002
А что модно в 2к17?
Аноним 13/05/17 Суб 22:35:48  990147
>>990140
Дело не в моде, а в гарантиях.
Аноним 13/05/17 Суб 23:43:11  990166
>>990140
https://github.com/7Y2RPXK3ETDCNRDD/dungeon_generator/blob/master/Headers/Rand.h
Аноним 14/05/17 Вск 00:27:10  990178
> std::mt19937 mt(time(NULL));
В голос.

Не слушай этого >>990166 идиота.
Аноним 14/05/17 Вск 00:39:48  990182
blob (142Кб, 1366x768)
>>990178
Пожалуйста, скажите это же пузырек?
Аноним 14/05/17 Вск 00:41:04  990184
>>990182
Не скажу.
Аноним 14/05/17 Вск 00:46:14  990189
>>990182
Под этой плашкой я приравниваю i к 0
Аноним 14/05/17 Вск 00:47:10  990191
>>990189
Всем пофиг
Аноним 14/05/17 Вск 00:49:57  990193
>>990191
Мне тожея пришел повниманиеблядствовать
Аноним 14/05/17 Вск 09:18:32  990296
>>990140
http://govnokod.ru/13289
Аноним 14/05/17 Вск 09:19:04  990297
>>990182
Бля почисти интерфейс и настрой подсветку
Аноним 14/05/17 Вск 12:09:15  990330
>>990182
нет
Аноним 14/05/17 Вск 13:21:38  990367
>>990147
>>990166
>>990296
>>990178
Так и что в итоге лучше rand()?
Аноним 14/05/17 Вск 14:15:13  990387
>>990367
Тебя это ебать не должно.
Аноним 14/05/17 Вск 15:30:03  990417
>>990387
Почему?
Аноним 14/05/17 Вск 16:02:22  990427
Как в map в качестве значения использовтаь массив? Как объявить?
Аноним 14/05/17 Вск 16:07:30  990428
>>990427
Тип и две звёздочки
Аноним 14/05/17 Вск 16:09:32  990429
>>990427
Используй std::array
Аноним 14/05/17 Вск 17:04:48  990451
Можно ли в Notepad++ сделать так, чтобы в списке функций класса (по кнопке "список функций") были также конструкторы и деструкторы класса?
Аноним 14/05/17 Вск 17:30:07  990456
>>990093
Порядок изложения вопроса - пиздец. Тебе не переменную менять нужно, тебе нужно асинхронно читать из stdin. Нет способа для того, чтобы посмотреть, есть в stdin новые символы или нет. stdin - это не интерактивная сущность, у него есть только два состояния: eof и "щас прочитай что-нибудь, и если появится eof, я те скажу". Для интерактивной работы с клавиатурой нужны другие инструменты, и для того, чтобы сделать то, что ты хочешь, и именно через stdin, где-то в этом инструменте должна быть асинхронность (два потока - один main, другой читает).
>>990140>>990367
В глазки любишься? Посмотри все овтеты на свои посты.
>>990182
Родина дала тебе std::swap. Олсо, за один проход пузырёк не работает, так что нет.
>>990427
std::array - его можно использовать везде, где ты можешь использовать сишный массив.
Аноним 14/05/17 Вск 22:24:37  990670
Посоветуйте хороший мануал по работе с MMF на c++
Аноним 14/05/17 Вск 22:34:19  990677
>>990182
>>990456
Это чистый СИ, в стандартных библиотеках нет Swap'a. А проход не один, после каждого выполнения условия счётчик обнуляется >>990189
Аноним 14/05/17 Вск 23:21:29  990715
Помогите, плез, с Qt и SQL.
Вообще, проблема, кажется, в tableView...
Вылетает на
"
ui->tableView->setModel(model);
ui->tableView->show();
"
https://pastebin.com/NpNtPs2b
Вот исходники
Аноним 14/05/17 Вск 23:23:35  990717
>>990677
> проход не один, после каждого выполнения условия счётчик обнуляется >>990189
Похоже на сортировку выбором
Аноним 14/05/17 Вск 23:55:29  990749
>>990677
>Это чистый СИ,
Это крестотред. Очень приятно, чаю хотите?
>>990715
Всё-таки, на какой из двух?
Аноним 15/05/17 Пнд 00:02:08  990750
>>990715
И что такое ui_dialog? Самое главно ты не показал.
Аноним 15/05/17 Пнд 00:24:32  990765
>>990750
Не понял вопроса.
Форма и класс под нее, по сути, автосгенерированы QtCreator'ом
>>990749
На setmodel вылет.
Аноним 15/05/17 Пнд 00:44:26  990776
>>990765
Ага, так этот код не запустить без кода, который по твоей форме сгенерировался.
Аноним 15/05/17 Пнд 02:29:08  990812
>>988390
Что за цветовая схема? Поделись, пожалйста
Аноним 15/05/17 Пнд 02:38:12  990813
>>990776
Тогда можно потелепатировать: как сделать в QtC такую форму, с которой программа будет вылетать?
Аноним 15/05/17 Пнд 07:33:22  990852
>>990715
>private Ui::Dialog
Зачем наследовать сгенерированный класс? Никогда такого не видел, он должен быть полем в классе (указатель на не существующий в хедере тип), а "ui_dialog.h" подключается в cpp файле. setupUi(this); вызывается в самом начале конструктора.
Если что-то другое сегфолится - запускай дебаггер и смотри где проблема.
Аноним 15/05/17 Пнд 11:47:54  990959
>>990852
>>990813
https://yadi.sk/d/mFpUP-fP3JA3eW

Вот файл проекта. Наследование прописалось автоматически при , опять же, создании формы в QtC
Аноним 15/05/17 Пнд 17:21:32  991168
Делаю тестовое задание. Считается ли std::pair контейнером?
Аноним 15/05/17 Пнд 17:45:29  991188
>>991168
Если тебе на мейлаче скажут, что нет, а работодатель скажет, что да - будешь в этот тред ссылаться?
Аноним 15/05/17 Пнд 17:48:31  991192
>>991168
http://en.cppreference.com/w/cpp/concept/Container
Аноним 15/05/17 Пнд 17:48:45  991193
Где найти последнюю версию стандарта плюсового в pdf, бесплатно, без регистрации и смс?
Аноним 15/05/17 Пнд 17:54:09  991200
>>991193
В гугле и на рутрекере.
Аноним 15/05/17 Пнд 20:36:10  991326
2017-05-1600-35[...].png (20Кб, 734x368)
>>991200
Такая хуйня вместо стандарта пойдёт?
Аноним 15/05/17 Пнд 21:07:05  991344
>>991326
Подойдёт для 99,999% применений.
Олсо http://eel.is/c++draft/ - драфт 2017го.
Аноним 16/05/17 Втр 00:27:32  991492
Сап. Вот у нас есть допустим int x = 4; то есть обычная переменная. И есть ссылка const int &ref = x. Всегда думал, что const у ссылки означает только, что через данную ссылку изменять то, на что она ссылается, не получится. В то же время, если x поменяется, x = 10, ref должна тоже быть 10, так как ссылается на x. Но вот один коллега утверждает, что ссылки на константу в некоторых случаях могут "оптимизироваться", то есть не обновляться от изменения переменной, на которую ссылаются. Я вот думаю, что это чушь, никогда не встречал упоминаний о таком поведении и ни разу не сталкивался на практике, но на всякий случай, ткните носом в учебник/стандарт, где написано что такого действительно не может быть.
Аноним 16/05/17 Втр 14:08:29  991694
>>991492
Если у тебя есть два потока, которые, для примера, должны выполняться на разных ядрах процессора, то вполне может сложиться ситуация такая:
на первом ядре:
1. значение х считывается из памяти
2. что-то делается со значением х
на втором ядре (и втором потоке соответственно):
1. переменная х изменяется
2. что-то еще
Так вот, синхронность операций между потоками не оговорена, поэтому первый поток может считать устаревшее значение, даже если второй поток уже изменил его, потому что первый поток на своем первом ядре полезет в горячую память кэша, не промахнется при этом и увидит, что там значение, скажем 2. А второй поток уже в тот момент времени записал в ту же ячейку памяти значение, скажем 3. Так вот до тех пор, пока область кэша, где хренится х не инвалидирована, каждое ядро будет видеть такое значение х, которое было получено при предварительной выборке.
Для этих дел уже издревле придумали атомарные операции. Но с "небольшим" промедлением они попали в 11 стандарт.
Аноним 16/05/17 Втр 15:56:55  991752
>>991492
А своего воображаемого коллегу ты не можешь спросить про то, на чём он основывает свой бред?
>>991694
Это не специфично для ссылок.
Аноним 16/05/17 Втр 17:02:44  991809
>>991752
Любой объект можно хранить по ссылке. Тот же указатель только со слегка измененной семантикой.
Ничто не мешает тебе сделать такое, к примеру:

class A {
public:
A(int &x) : _x(x) { }
private:
int &_x;
};
Аноним 16/05/17 Втр 20:13:22  991913
>>991492
Конкретно ссылка не может не "обновиться", потому что ссылка реализуется через указатель. Но в некоторых ограниченых случаях компилятор действительно может соптимизировать и закешировать значение переменной (в регистре процессора). Для таких случаев есть ключевое слово volatile которое запрещает кеширование. Но это касается переменных вообще всех, а не именно костантных ссылок. Очень маловероятно что константные ссылки как-то еще более агрессивно оптимизируются, так как это будет приводить к слишком не предсказуемым результатам, причем в и так изначально очень ошибконебезопасной ситуации (многопоточность с разделяемым состоянием).
Аноним 16/05/17 Втр 20:56:18  991937
Как можно очистить массив произвольных элементов без лишних затрат на выделение памяти?
Аноним 16/05/17 Втр 22:31:22  991984
Ананасы, как в qt влепить поверх виджета анимированный кружок Ну типа как в винде, когда что-то подгружается такая залупа крутится?
Аноним 16/05/17 Втр 22:34:57  991987
>>991937
delete [] arrayName;
Аноним 16/05/17 Втр 22:36:45  991989
>>991984
Нарисуй макет крутяшки, в ФШ или еще где сотри весь фон (шоб прозрачно всё было, кроме рисунка), потом налепи на canvas/image и крути его изменением угла наклона
Аноним 16/05/17 Втр 23:12:12  992000
1.PNG (50Кб, 1160x573)
2.PNG (42Кб, 1247x478)
блять. я просто добавил второй проект в решение, добавил в первый проект ссылку на второй, потом удалил ссылку а затем и весь проект. теперь я вижу пикрелейтед. что за хуйня и как это исправить?
Аноним 16/05/17 Втр 23:14:57  992003
>>992000
всё, отбой. нашел решение.
Аноним 17/05/17 Срд 15:35:34  992247
>>992003
Мы очень за тебя рады.
Аноним 17/05/17 Срд 19:16:03  992317
1.PNG (19Кб, 1109x215)
Объясните мне, зачем сишники кастуют результат всяких системных функций, если не присваиваете значение?
Аноним 17/05/17 Срд 21:09:01  992357
Я собрался делать свой простой ЯП на С++, который будет включть строки, числа, if/else, for, списоки, работа с http, компиляция в бинарник. КАКИЕ ПОДВОДНЫЕ? Что нужно изучить?
Аноним 17/05/17 Срд 21:30:45  992366
Читаю в цикле символы из файле с помощью get (ifstream), но упираюсь в нулевой байт и зацикливаюсь, почему get не переходит на новую строку а проскакивает её неизвестно куда?
Аноним 17/05/17 Срд 21:47:03  992373
>>992366
Ничего не понятно.
Аноним 17/05/17 Срд 21:54:10  992379
>>992373
В общем как мне посимвольно считывать текстовый файл? Функция get из библиотеки ifstream упирается в конец первой строки не переходя на новые строки.
Аноним 17/05/17 Срд 22:12:41  992382
>>992379
http://ideone.com/ukFqIv
Аноним 17/05/17 Срд 22:14:31  992384
>>992357
Гугли Ахо, Ульман Компиляторы. Принципы, технологии и инструменты
Аноним 17/05/17 Срд 23:32:08  992431
Панове, смотрите, функция WriteConsoleOutputA пишет в сосноле системной кодировкой с кириллицей. Как сделать так, чтобы она писала cp850? Пробовал SetConsoleOutputCP и SetConsoleCP - ничего не меняется, что бы я там ни ставил - все равно кириллица дефолтная.
Аноним 17/05/17 Срд 23:52:10  992439
А ты там вручную в main не локаль не устанавливаешь на LC_ALL, "russian"? И вообще, посмотри что возвращает SetConsoleOutputCP. Если 0 - выведи/посмотри в дебаге что выдаст GetLastError()
Аноним 18/05/17 Чтв 00:04:32  992452
>>992439
Не устанавливаю никакие локали. Пробовал даже английскую ставить специально - хуй. Проверял, и SetConsoleOutputCP, и SetConsoleCP обе возвращают тру. Пробовал проверять кодировку GetConsoleCP, она говорит, что все норм и кодировка действительно 850.
Аноним 18/05/17 Чтв 00:26:27  992464
>>992452
Попробуй чисто для прикола создать буфер, заменить им текущий, а для оригинального - закрыть хэндл и удалить, и уже на новом буфере воткнуть новую кодировку.
Аноним 18/05/17 Чтв 00:36:14  992470
>>992452
Это зашитый текст в исходниках неправильно выводится (попробуй сменить кодировку исходников)? А если считать строку и вывести?
Аноним 18/05/17 Чтв 01:49:25  992496
>>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 настойчиво печатаются именно они, какая бы кодировка не стояла. Пробовал даже греческую ставить - хуй там, кириллица.
Аноним 18/05/17 Чтв 09:16:11  992565
>>992496
setlocale(LC_ALL, "Russian");
Аноним 18/05/17 Чтв 15:17:35  992756
>>992565
И что это должно было поменять?
Аноним 18/05/17 Чтв 17:40:30  992854
>>992496
Что будет, если выводить коды символов а не сами символы (выводи вместо символов числа, проще говоря). И второе, какого хуя вонючий WinAPI делает в треде про кресты, это ж ЦЭ!
Аноним 18/05/17 Чтв 20:06:49  992901
>>992854
Тогда он выводит числа с 0 по 127 по порядку, затем идет -128, -127, -126 и так до -1. При любой кодировке.
Аноним 19/05/17 Птн 00:26:57  993063
Снимок.PNG (43Кб, 1281x444)
>>992496
У меня все норм(кроме ру ввода). Зачем тебе 850ср если есть юникод?
Аноним 19/05/17 Птн 02:12:47  993099
>>993063
Ну вот почему у тебя норм, а у меня - нет? Я это хочу понять. В гугле вообще инфы нет.
Аноним 19/05/17 Птн 07:41:27  993141
>>993099
Попробуй может шрифт в консоли поменять
Аноним 19/05/17 Птн 11:11:15  993200
какой смысл сидеть на qt если вакансии практически нет
Аноним 19/05/17 Птн 12:11:21  993220
>>993200
Ну вообще на крестах нет смысла сидеть, если хочешь какой-то бабос получать.
Аноним 19/05/17 Птн 15:50:42  993327
>>993141
как?
Аноним 19/05/17 Птн 16:09:12  993342
>>993141
Действительно, после смены шрифта работает. Только в других шрифтах первые символы, которые заменяют непечатные (☺☻♥♦♣♠ и тд) отображаются квадратами. Какой шрифт у этого >>993063 ?
Аноним 19/05/17 Птн 16:56:16  993369
>>993342
Consolas, похоже
Аноним 19/05/17 Птн 19:47:58  993448
Перекат >>993446 (OP)
Аноним 30/05/17 Втр 05:32:45  998382
>>988927
>Подсветка илитная.
У нее название есть?
Аноним 30/05/17 Втр 15:59:53  998618
>>998382
Вангую что-то из base16
Аноним 03/06/17 Суб 14:27:47  1000432
Хаюхай



Такой вопрос: Почему для инстанцированных классов создаются только те методы, которые были использованы?

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 546 | 33 | 195
Назад Вверх Каталог Обновить

Топ тредов
Избранное