Программирование


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

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
716 44 178

C++ №95 /cpp/ Аноним # OP 09/10/19 Срд 18:13:13 14924421
image.png (350Кб, 600x350)
600x350
Аноним 09/10/19 Срд 18:14:47 14924442
Почему все до сих пор пишут классы в С++, разделяя хэдер и реализацию? Это все из-за наследия сишки или имеет какой-то сакральный древний смысл.
Аноним 09/10/19 Срд 18:16:17 14924453
>>1492424

type* - это же именно отдельный тип данных, следовательно, лучше относить его к первому варику.
Аноним 09/10/19 Срд 18:53:24 14924644
Что означает комбинация int &Arr? Я понимаю что это такое по отдельности и частично вместе, но как работает &?
Аноним 09/10/19 Срд 18:59:24 14924735
>>1492464
Ты не знаешь что ссылка значит, или что?
Аноним 09/10/19 Срд 18:59:52 14924756
>>1492464
Ну, как бы имелось в виду int *&Arr.
Аноним 09/10/19 Срд 19:01:31 14924807
Стоит юзать вектор или можно обойтись в принципе пацанским выделением динамического массива в проде? Какие подводные у обоих вариантов.
Аноним 09/10/19 Срд 19:01:33 14924818
>>1492473
Я понимаю как примерно работают ссылки и указатели по отдельности, я даже понимаю что значит *a = &b, но вот эту штуку я вижу впервые и не могу нагуглить что это.
Аноним 09/10/19 Срд 19:01:42 14924829
>>1492475
Ссылка на указатель?
Это та же ссылка, только на указатель.
вроде как, впервые вижу чтоб вобще кто то так писал
Аноним 09/10/19 Срд 19:04:51 149248510
>>1492482
>Ссылка на указатель?
Может это как ссылка от указателя на целочисленный тип? То есть это может пригодится при работе с массивом (не ебу как, но может).
Аноним 09/10/19 Срд 19:28:17 149251611
image.png (124Кб, 1351x753)
1351x753
Какого хера автор говорит, что пользователь не сможет НАПРЯМУЮ работать с этими переменными? Какая разница, сделано это через геттеры и сеттеры или просто через публичную переменную, все равно доступ такой же. Я, блять, не понимаю нахуя это тут. В джаве это понятно зачем городить, но в кресты ЗОЧЕМ.
Аноним 09/10/19 Срд 19:28:40 149251712
М о д у л и
о
д
у
л
и
Аноним 09/10/19 Срд 19:31:54 149252313
>>1492516
Когда ты пишешь один, то наверное незачем. А если несколько человек, то у каждого своя задача и кто то может написать одну часть программы, а другой использовать ее не вникая в то как оно работает, и взаомодействовать с ней с помощью геттеров и сеттеров.
Аноним 09/10/19 Срд 19:33:10 149252514
>>1492523
Ну, так, если он получает значение просто публичной переменной, то он тоже особо не будет вникать.
Аноним 09/10/19 Срд 19:36:28 149252815
>>1492516
Публичные переменные не нужны. А ещё может понадобиться потокобезопасность, тогда с методами можно сделать так, чтобы было последовательное выполнение при одновременных вызовах.
Аноним 09/10/19 Срд 19:39:06 149253016
>>1492444
И Н К А П С У Л Я Ц И Я
Н
К
А
П
С
У
Л
Я
Ц
И
Я

Это такая тонкая перекличка байтойобушков?
Аноним 09/10/19 Срд 19:41:02 149253417
>>1492516
Тут это нахуй не нужно. Видимо имеется в виду что в нормальном классе будут проверки дат на валидность.
Аноним 09/10/19 Срд 19:41:52 149253718
>>1492530
> Это такая тонкая перекличка байтойобушков?
> C++ №95 /cpp/
А ты толковый.
Аноним 09/10/19 Срд 19:42:56 149253919
>>1492525
Возможно, что прежде чем записать значение в переменную нужно это значение обработать. Например проверить чтобы значение лежало в определенном диапазоне, а если нет, то привести значение в необходимый вид.
Аноним 09/10/19 Срд 19:43:35 149254020
>>1492530
Вот, сука, нигде такой хуйни нет, но в с++ есть.
Я имею ввиду ТАКАЯ инкапсуляция посредством хэдеров.
Аноним 09/10/19 Срд 19:49:28 149254721
>>1492444
А что с этим не так? Поясните, я правда не знаю, плохо знаком с другими языками. Как по другому инклюды делать? Тебе же не нужна вся реализация, она в библиотеках, тебе нужен только интерфейс.
Аноним 09/10/19 Срд 20:01:27 149255322
>>1492444
>Это все из-за наследия сишки
Yes.
>имеет какой-то сакральный древний смысл
Tut tozhe yes. Правда не древний нихуя.

Во-первых, потому что в плюсах всё ещё нет модулей (выйдут в 20 версии, уже утверждены), и хэдэры подставляются как есть — текстом. Каждый #include — это просто текстовая подставка, которую надо парсить по новой. В более новых языках есть модули и код всегда парсится только 1 раз.
Во-вторых, а где ты реализацию с интерфейсом-то в куче видел? В го и скриптовых яязыках?
Аноним 09/10/19 Срд 20:18:15 149256123
>>1492553
>Во-вторых, а где ты реализацию с интерфейсом-то в куче видел?
Разве в джаве не так? Ты же не делаешь джва файла на класс.
Аноним 09/10/19 Срд 22:28:33 149265824
>>1492442 (OP)
Здравствуйте аноны. Вопрос по с, но напишу сюда, т.к. предполагаю, что С полумертв, а большие братки не откажут.

Вопрос достаточно нубский.

Хочу вместе с хедером некого модуля, подключать и его глобальные переменные.
(я опустил #ifndef, они есть)
http://ideone.com/3YIgqa

Естественно, я получаю залупу за воротник, т.к. объявление переменной происходит 2 раза. И в module.c и в main.c и #ifndef тут никак не спасет.
У меня нет вариантов использовать Get\Set функции (C89 нет inline) а обращение будет часто. как уже догадались ебебедед

В итоге решил объявлять переменные в Module.с, и отдельно иметь хедер модуля объявлениями функций и отдельный с extern объявлением переменных.
Инклудить все в Module.h и его уже подключать в программе.
В то же время в Module.c только ModuleFunc.h

Лучше примером.
http://ideone.com/10EkTP

Вопрос в том, что правильный ли это вариант и единственный ли? Или я где-то туплю.
Мне не нравиться, что у меня кол-во файлов с 2х до 4х возрасло и если я захочу сохранять логичную и последовательную структуру - возрастет еще.
Не хочу иметь ModuleInternal.h какой, в котором все остальное без разбору свалено
На форумах все предлагают отдельно объявлять extern там где требуется и это звучит как залупа.

По моему я какой то хуйней заморачиваюсь, но для меня важно.
Аноним 09/10/19 Срд 22:46:47 149267325
Аноним 09/10/19 Срд 22:47:20 149267426
>>1492658
ой бля, прости анон, только сейчас до конца дочитал
Аноним 09/10/19 Срд 22:52:05 149268027
image.png (381Кб, 606x467)
606x467
>>1492674
Извиняю.
Извинения на двачах, кек
Аноним 09/10/19 Срд 23:14:21 149269428
>>1492680
В Чечне на каком стандарте сидят, интересно.
Аноним 09/10/19 Срд 23:25:16 149269829
>>1492694
На не имеющем аналогов.
Аноним 09/10/19 Срд 23:27:45 149269930
>>1492658
Хедер с интерфейсом или хотябы с функцией, возвращающей некий указатель, а имплеменатцию и сами глобальные переменные внутрь некого си файла.

Пользовался этим в С++, когда на С++14 сидели, экстерноговно не кушай
Аноним 09/10/19 Срд 23:32:08 149270231
изображение.png (136Кб, 1366x768)
1366x768
Помгите, прошу. Какие настройки вам показать? Что не так? Почему все красное? Соре за paint. Он какого то хуя заис тут
Аноним 09/10/19 Срд 23:36:22 149270332
>>1492699
Нету у меня возможности использовать функцию - нет inline по стандарту, а компилятор дурной очень, не хрена не факт, что догадается разворачивать геттер.
И нет дизасм не хочу не буду смотреть

Чем extern так плохи?

>>1492702
Вот заодно анону помогу.
То, что в солюшен эксплорере это файлы, которые будут собираться в объектные.
Хидеры будут игнорироваться, ты можешь их туда пихать для удобства, но программе они не будут известны.

А что бы инклудить хидеры, ты должен указать где их искать, это делается обычно
Настройки проекта -> Include Directories или что то такое, там название и место в MVS из года в год меняется.
Аноним 09/10/19 Срд 23:37:01 149270433
изображение.png (142Кб, 1366x768)
1366x768
>>1492702
Я наконец то получил ошибку прямым текстом, скомпилив ранее работающий проект
Аноним 09/10/19 Срд 23:39:28 149270534
>>1492704
Хотя мне кажется что эта ошибка не имеет ничего общего с той. Короче ебаная вижуал студия. Я просто обновил ее
Аноним 09/10/19 Срд 23:39:48 149270635
изображение.png (197Кб, 1366x768)
1366x768
Аноним 09/10/19 Срд 23:42:37 149270836
>>1492705
Не хочу линукс, говорили они. Пердолинг, говорили они
Аноним 09/10/19 Срд 23:45:26 149271237
>>1492703
>нет inline по стандарту
тебе не нужно инлине, у тебя обычная функция самая, определение которой в трансляционном юните. Что-то в духе:

--------------
zalupa.h

int get_var();
int set_var(int val);

--------------
zalupa.cpp

static int g_var = 0;

int get_var() {
return g_var;
}

void set_var(int new_var) {
g_var = new_var;
}

--------------
За синтаксис не ручаюсь
Аноним 09/10/19 Срд 23:48:28 149271438
>>1492703
>нет inline по стандарту
Аноним 09/10/19 Срд 23:51:16 149271739
>>1492703
>нет inline по стандарту
Inline не инлайнит функции. Это ключевое слово позволяет делать так, чтобы компилятор не ругался на multiple declarations одной и той же функции при инклудинге хедера, когда эта функция описана в самом хедере.
Сам инлайн только на усмотрение компилятора. Более того, даже аттрибуты типа _____forceinline_____ уже давно игнорятся компиляторами, потому что их лепят где попало.
Аноним 09/10/19 Срд 23:54:36 149271940
>>1492658
>Вопрос в том, что правильный ли это вариант и единственный ли? Или я где-то туплю.
За именование модулей с большой буквы оторву яйца, виндоебок проклятый. Зачем тебе 2 файла не понятно. Достаточно хедера с экстернами. Но вообще это в корне неверно, но ты хочешь так.

//module.h
extern int module_global;
void ModuleInit(void);

//Module.c

#include ModuleFunc.h

int module_global;

void ModuleInit(void){
module_global = 1;//какой нахуй int здесь, поехавший
}

//Main.c

#include module.h
void main (void){
ModuleInit();
module_global++;
}
Аноним 09/10/19 Срд 23:57:03 149272141
изображение.png (106Кб, 1366x768)
1366x768
Держу в курсе
Аноним 09/10/19 Срд 23:58:56 149272542
А правильно так.

//module.h

typedef int error;

typedef struct {
int ciferka;
} module_context;

void module_create(module_context@@ yoba);

//module.c

ERROR module_create(module_context@@ yoba) {
*yoba = malloc(sizeof(module_context));
yoba->ciferka = 1;
}

//main.c

int main() {
module context yoba;
if (!module_create(yoba)) {fprintf(stderr, "Беда, капитан");exit(-1);};
}

Либо - в следующем посте
Аноним 09/10/19 Срд 23:59:08 149272743
>>1492721
В рот ебал все это. Тупо версия qt не выбирается. И ЭТО НА РАБОТАЮЩЕМ НЕДАВНО ПРОЕКТЕ
Аноним 09/10/19 Срд 23:59:30 149272844
>>1492727
win32 попробуй выбрать
Аноним 10/10/19 Чтв 00:00:29 149273145
>>1492728
А может быть такое, что mscv 2017 а студия 2019?
Аноним 10/10/19 Чтв 00:01:03 149273346
>>1492731
Всмысле у меня так и есть. Может ли ошибка поэтому быть?
Аноним 10/10/19 Чтв 00:01:37 149273447
>>1492733
Может быть надо пересобрать qt, либо в msvc указать старый компилятор. ЗАТО НЕТ ПЕРДОЛИНГА
Аноним 10/10/19 Чтв 00:03:22 149273748
А за такое тебя сразу возьмут мидлом.

//module.h

typedef int ERROR;

struct module_context_tag;
typedef struct module_context_tag module_context;//вроде нигде не проебался, ненавижу сишку

ERROR module_create(module_context@@ yoba);

//module.c

//ииинкапсуляция
struct module_context {
int ciferka;
}';

ERROR module_create(module_context@@ yoba) {
*yoba = malloc(sizeof(module_context));
yoba->ciferka = 1;
return 1;//забыл в прошлый раз
}

//main.c

int main() {
module_context yoba;
if (!module_create(yoba)) {fprintf(stderr, "Беда, капитан");exit(-1);};
}
Аноним 10/10/19 Чтв 00:07:25 149274449
>>1492731
может, в 2019 студии можно ставить тулчейны от 17 и 15, и собирать ЛЕГАСНЮ.
Аноним 10/10/19 Чтв 00:11:40 149275050
>>1492744
Я честно говоря запутался. За что вообще отвечает msvc. Еще странно, что все работало на 19 версии, но после какого то обновления сломалось. Поможет ли, если я снесу все и заново установлю?
Аноним 10/10/19 Чтв 00:14:23 149275351
>>1492706
Ты обновился с 2017 на 2019? Для 2019 нет предсобранного msvc компилятора в Qt. Ставь 2017 build tools через установщик/настройщик студии, тогда будет валидно.
Аноним 10/10/19 Чтв 00:15:53 149275552
Аноним 10/10/19 Чтв 00:16:27 149275653
Там типа 141 build tools тебе надо. Вместо 142. Но тогда и проект должен быть для этой версии, старой, не апгрейдь.
Аноним 10/10/19 Чтв 00:17:20 149275754
Не апгрейдь проект в смысле до 2019, оставляй его в режиме 2017.
Аноним 10/10/19 Чтв 00:17:45 149275855
>>1492755
Вообще нужно приучить себя не обновлять виндовые приложения сразу. У меня однажды сама винда полетела после своего же официального обновления
Аноним 10/10/19 Чтв 00:17:51 149275956
>>1492750
я бы на твоем месте вообще не пользовался студийным тулчейном в твом случае. Накати mingw через QT инсталлер, и пользуйся им.

Ну или полноценно девелопи в студии с qt tools.
Аноним 10/10/19 Чтв 00:18:20 149276057
Аноним 10/10/19 Чтв 00:19:29 149276158
>>1492717
> Это ключевое слово позволяет делать так, чтобы компилятор не ругался на multiple declarations одной и той же функции при инклудинге хедера, когда эта функция описана в самом хедере.

Интересно надо будет почитать, всегда считал что как рекомендация к развертке работает.

>>1492712
Я к тому и пишу, есть шанс что конкретно мой тупой компилятор ее не развернет.
А мне очень желательно, что бы просто была изменена ячейка памяти, без джампов.

И сейчас все таки посмотрел дизасм - хуй, не разворачиваются геттеры из одной команды.

>>1492719
>>1492725
>malloc
Out of memory лол

Это вся хуйня в контексте байтоебства, я в начальном посте написал, мне нужно получить прямое обращение к ячейки памяти, на выходе.

Я люблю в хедере описывать дефайны и тайпдефы, после чего инклудить их в *.с и его же инклудить в проект.
Это разве нихуя не правильный подход?

>>1492725
Вот конкретно тут, у тебя тайпдеф в хедере, но этот же тип используется в .с файле, куда хедер не заинклужен.
Оно на хуй не должно послать разве?

>//какой нахуй int здесь, поехавший
Опечатка же
Аноним 10/10/19 Чтв 00:24:03 149276359
>>1492761
В догонку, мне не нужна переменная в main, она мне нужна в других модулях, которые будут на основе этого.
И очень удобно иметь один ебучий хедер, который ты пихаешь куда надо.

Макароны? Безусловно, но лучше чем видимые везде, тут хотя бы видишь что используется.
Аноним 10/10/19 Чтв 00:26:45 149276660
>>1492761
>Я люблю в хедере описывать дефайны и тайпдефы, после чего инклудить их в *.с и его же инклудить в проект.
>Это разве нихуя не правильный подход?
Нормальный подход
>Вот конкретно тут, у тебя тайпдеф в хедере, но этот же тип используется в .с файле, куда хедер не заинклужен.
>Оно на хуй не должно послать разве?
У меня дохуя опечаток, это одна из них
>>1492763
>И очень удобно иметь один ебучий хедер, который ты пихаешь куда надо.
В хедере extern'ы, то есть декларейшен, в соответствующем модуле - дефинишены без экстернов. И все будет работать. Так ине понял зачем тебе делить хедер на два.
>И очень удобно иметь один ебучий хедер, который ты пихаешь куда надо.
Пока не окажется, что ты у тебя два шаговых двигателя вместо одного, а код весь жестко забит на глобальные переменные, и вот тут и начинаются макароны.
Впрочем, у меня задача была показать тебе разные способы, а не выбирать их за тебя.

Аноним 10/10/19 Чтв 00:35:34 149277361
>>1492766
>была показать тебе разные способы
Я учел на будушее, спасибо.

>>1492766
>В хедере extern'ы, то есть декларейшен, в соответствующем модуле - дефинишены без экстернов. И все будет работать. Так ине понял зачем тебе делить хедер на два.
Но если h инклудится в c, где объявление переменной, получается.

extern int var;
int var;

И тебя посылают на хер. Разве не так?

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

Аноним 10/10/19 Чтв 00:40:29 149277662
>>1492773
>И тебя посылают на хер. Разве не так?
Нет http://ideone.com/EUF2w6

>Это хороший пример, но оно слишком абстрактный, от ситуации подобное можно и через создание экземпляров и через макароны и через коллекцию.
Почему, все конкретно.
Глобальные переменные не используем. Вместо них создаем контекст модуля и таскаем его. Желательно этот контекст спрятать в .c файле, чтобы наружу торчал только указатель. Это best practices сишного кода.
Исключения следует делать только в случае совсем хардкорного байтоебства, и то, не факт. Потому что вместо malloc можно и статически контексты модуля повыделять, и тогда оверхеда не будет вообще, зато при желании ты сможешь делать несколько экземпляров модуля, что нужно намного чаще, чем ты думаешь.
С другой стороны какой-нибудь Quake написан примерно в твоем стиле, и ничего.

Аноним 10/10/19 Чтв 00:54:14 149278163
>>1492776
>Нет
И в правду. Вот тебе и домыслы... тогда все понятно.
В этом месте вопрос и решается.

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

Или
>совсем хардкорного байтоебства
Что собственно и мой случай - слабое устройство, в которое напихали аки в японское метро и еще хотят.

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




Аноним 10/10/19 Чтв 01:35:14 149280064
>>1492540
Компилировать все ссылающиеся на класс файлы vs компилировать только .cpp-файл.
Хм, что же выбрать?
Аноним 10/10/19 Чтв 01:56:49 149280965
asyncop2.png (24Кб, 377x413)
377x413
Аноним 10/10/19 Чтв 01:57:43 149281066
>>1492809
сразу. По-этому его надо нонстопм дрочить на каждый чих
Аноним 10/10/19 Чтв 02:16:05 149281467
>>1492442 (OP)
У меня есть лист и два итератора. Мне надо поменять местами значения на которые они указывают ( в листе), но если использовать swap, то итераторы инвалидируются. Надо это выполнить без инвалидации за О(1). Говорят, можно использовать как-то splice, но как?
Аноним 10/10/19 Чтв 04:07:59 149282368
>>1492755
>>1492753
Нахуя вообще пользоваться кутишным расширением? Сколько лет уже программирую, никто ни разу не сказал "вот это бля годное расширение, заебца". Почему нельзя просто™ скачать собранные бинарники и подключить их к проекту? От 17 студии подойдут к 19.
Аноним 10/10/19 Чтв 07:52:31 149285369
>>1492814
>то итераторы инвалидируются.
С чего бы? Ты не итераторы меняешь, а значения, на которые они указывают.
Аноним 10/10/19 Чтв 10:42:33 149291770
>>1492810
А если вместо передачи handler у меня yield[ec]? Т.е. переключение на корутину. Сначала выполнится корутина, а потом run разблокируется? По тестам вроде так, я ставил задержки внутри корутины и смотрел по логам в консоль, что вызовется первым: печать после задержки внутри корутины или печать после вызова run. Типа

boost::spawn(io_context, lambda); // внутри лямбды вызывается sleep и log
some_async_op(..., yield[ec]);
io_context.run();
log(...);
Аноним 10/10/19 Чтв 10:46:27 149292271
>>1492761
>Я люблю в хедере описывать дефайны и тайпдефы, после чего инклудить их в

А я люблю в хедере описывать дефайны и тайпдефы, после чего инклудить их в
.с. Каждый день я хожу по проекту с хедером и собераю в него все дефайны которые вижу. На два полных файла целый день уходит. Зато, когда после тяжёлого дня я открываю main.c... ммм и сваливаю в нее свое сокровище. И запускаю компилятор представляя, что меня поглотил единый организм дефайны. Мне вообще кажется, что дефайны, умеют думать, у них есть свои семьи, города, чувства, не меняйте их на шаблоны, лучше приютите у себя, говорите с ними, ласкайте их…. А вчера в ванной, мне преснился чудный сон, как будто я нырнул в море, и оно прератилось в дефайны, рыбы, водоросли, медузы, все из дефайнов и тайпдефов, даже небо, даже Аллах!.
Аноним 10/10/19 Чтв 10:46:40 149292372
>>1492917
> boost::spawn(io_context, lambda); // внутри лямбды вызывается sleep и log
перед sleep и log внутри лямбды есть yield, разумеется
Аноним 10/10/19 Чтв 11:13:02 149294673
Какое исключение выкидывать сеттеру при инвалидном аргументе?
Аноним 10/10/19 Чтв 11:30:13 149297374
>>1492946
Я понял. Не отвечайте.
Аноним 10/10/19 Чтв 11:36:32 149298575
image.png (5Кб, 553x123)
553x123
Насколько хороша идея сделать в библиотеке отдельный хэдер с дефайнами условий компиляции, где, например, можно будет отключить проверки аргументов и так далее.
Аноним 10/10/19 Чтв 13:02:51 149305576
>>1492985
Этот отдельный хедер звали config.h
Аноним 10/10/19 Чтв 13:43:32 149308077
Хочу начать писать на с++, решил сделать 1й проект веб-апликейшен логер моего рабочего времени.
Погуглил как делать серваки, чаще всего предлагают писать свои сокеты/хендлеры с нуля.
Погуглил "готовые решения", нашел это https://github.com/etr/libhttpserver#introduction

Теперь сомневаюсь в своей затее, веб-сервера не особо популярны на плюсах?
Может кто-нибудь сможет подсказать как мне лучше начать в этом направлении писать?
взять писать без задней мысли прошу не советовать
Аноним 10/10/19 Чтв 13:59:32 149309178
>>1493080
Обычно используют boost, но рискуешь охуеть от всяких фокусов. >>1492809
Аноним 10/10/19 Чтв 14:15:40 149310179
image.png (35Кб, 1069x496)
1069x496
Стоит ли создавать свои собственные классы ошибок или же просто потерпеть и поиспользовать std::runtime_error?
Аноним 10/10/19 Чтв 14:17:27 149310280
>>1493101
если у тебя разные обработчики для твоих ошибок - то да, иначе нет
Аноним 10/10/19 Чтв 16:37:34 149320081
>>1493101
Почему бы и нет, но нахуя столько бойлерплейта
Аноним 10/10/19 Чтв 16:42:08 149320382
>>1493080
Если в кьют умеешь то бери их сокеты, повторяй примеры из документации и всё. Если хттп сервак надо - на гитхабе пару либ готовых, qhttpserver например, эхо сервер в строчек 30. Но вообще да, серваки на плюсах не очень популярны судя по всему.
Аноним 10/10/19 Чтв 17:04:36 149323283
>>1492444
> Почему все до сих пор пишут классы в С++, разделяя хэдер и реализацию?
Это удобнее и понятнее.
Аноним 10/10/19 Чтв 17:14:48 149325084
>>1492523
То есть просто обертка?
Аноним 10/10/19 Чтв 17:16:00 149325185
Аноним 10/10/19 Чтв 17:48:21 149328286
Надо считать символ char. std::cin >> c; Как проверить, чтобы был введен именно символстрочной, заглавный цифра, а не строка или несколько цифр?
Аноним 10/10/19 Чтв 18:40:58 149331487
1570722034203.jpg (546Кб, 1080x1618)
1080x1618
1570722034289.jpg (517Кб, 1080x1620)
1080x1620
Как стать таким же умным, как этот челик?
Аноним 10/10/19 Чтв 19:04:33 149332688
>>1493314
Да тоже пизди всякие модные слова без перерыва, и все будут охуевать и думать "как стать таким же умным, как ты"
Аноним 10/10/19 Чтв 19:06:57 149332989
>>1493314
>не отличать ум от эрудиции
Тебе – никак.
Аноним 10/10/19 Чтв 19:40:20 149334590
>>1493314
че за дрыщ ебаной, у нас таких на заводе мужики байтоебы пиздят с ноги
Аноним 10/10/19 Чтв 19:53:08 149336191
>>1493314
Прсрись на форумах пару лет, почитай срачи. Будешь рожать подобное борщехлебное дерьмо тоннами.
Аноним 10/10/19 Чтв 19:57:37 149336392
>>1493314
>запретить стрелять себе в ногу
>запретить
Идите на хуй со своими запретами, авторитарные макаки.
Аноним 10/10/19 Чтв 19:58:06 149336593
>>1493282
Серьезно, помогите. Попробоваль сразу после ввода вставить проверку if(std::cin.failbit) так она при любом вводе срабатывает .
Аноним 10/10/19 Чтв 20:02:18 149337494
>>1493365
Хотя тут понял, где обосрался.
Но все же как выдавать ошибку, если на ввод подается больше 1 символа не ясно.
Аноним 10/10/19 Чтв 20:03:29 149337595
>>1493365
Читать строку целиком (getline) и потом проверять, что она из одного символа и т д.
Аноним 10/10/19 Чтв 20:28:12 149340196
>>1493282
Если у тебя есть conio.h, то можно getch() - она в принципе не даст больше одного символа ввести.

>строчной, заглавный цифра
isalnum()
Аноним 10/10/19 Чтв 22:02:30 149350997
>>1493314
Лучше не быть таким. И думать в первую очередь, как сделать без шаблонов.
Аноним 10/10/19 Чтв 23:10:08 149354698
В каких конкретных случаях создание ссылки продлевает жизнь объекта? Вот это работает например, висящей ссылки не будет. Сказать, что я охуел — ничего не сказать.
const auto &ref = create_some_rvalue();
Аноним 10/10/19 Чтв 23:11:10 149354999
Аноним 10/10/19 Чтв 23:15:23 1493553100
>>1493549
Дружок-пирожок, клуб безработных педиков парой тредов выше. Я трудоустроенный высокотестостероновый натурал.
Аноним 10/10/19 Чтв 23:17:49 1493557101
>>1493546
всегда, до конца скоупа.

{ // все ок
const int& var1 = something();
something2(var1)
}

const int& func()
{
const int& var2 = something();
return var2; // висяк
}


Аноним 11/10/19 Птн 00:46:52 1493597102
Пацаны, что такого сделали в msvc, что теперь не видно type alias'ы из базового класса? Ну то есть
[code]
template <class T>
struct MyBase
{
using my_t = T;
}

struct MyChild : MyBase<int>
{
// приходится писать так
using my_t = typename MyBase<int>::my_t;
}
[/code]
Раньше в vs 2017 в наследниках можно было не писать эту простыню.
Алсо, почему теперь нельзя написать [code]using T = T[/code]?
Аноним 11/10/19 Птн 00:54:26 1493600103
>>1493597
> using T = T
Так точно никогда нельзя было делать. Быть может, ты конкретизируешь вопрос?
Аноним 11/10/19 Птн 01:07:35 1493608104
>>1493600
Так, собственно, конкретизировать и нечего по сути. Был древний код как в примерах, при попытке собрать новой студией с /std:c++17 вылазят ошибки номер хуй C2386 во втором случае и что-то вроде unknown identifier в первом
Аноним 11/10/19 Птн 01:12:58 1493610105
Нахуя хвастаться скоростью, если всё равно все пользуются умными указателями а не сырыми? Нахуя вызывать деструктор по типу указателя, если ясно что память помечёт? Нахуя вводить лямбды если с безопасностью пиздец? Что за уёбище получилось в итоге? И почему им до сих пор пользуются?
Аноним 11/10/19 Птн 01:20:35 1493611106
>>1493610
Тебе в тред программистов на реакте
Аноним 11/10/19 Птн 01:32:46 1493616107
>>1493611
>пук
Никто и не ожидал, что у зашореных цппшников найдутся оправдания уёбищности этого говна. Но ты хотя бы мог отправить меня в раст-тред. Из этого треда _всех_ нужно отправлять в раст-тред. А ещё лучше попросить Абу сделать редирект
Аноним 11/10/19 Птн 01:35:19 1493617108
1545664.png (3Кб, 409x103)
409x103
1545454.png (19Кб, 893x320)
893x320
Как передавать нажатия по рабочему столу в реальном времени? Написал вот такой кусок кода, по задумке это что-то вроде рабочего стола, только в отдельном окне, то есть я нажимаю на папку - она открывается и так далее. Как я понимаю проблема в том, что в виндовс не может быть активно более 1 окна, есть какие-то способы обхода или реализация в целом хуйня, куда тогда стоит копать?
Аноним 11/10/19 Птн 01:48:39 1493622109
>>1493610
Я всем говорю, что инженером работаю. Тянки боятся, память течёт. Если бы на джс писал, то было бы стыдно смотреть в зеркало по утрам.
Аноним 11/10/19 Птн 01:51:50 1493624110
>>1493622
>Если бы на джс писал, то было бы стыдно смотреть в зеркало по утрам.
корчил бы в зеркало ахегао и складывал бы руки в кошачьи лапки
Аноним 11/10/19 Птн 02:11:31 1493630111
>>1493616
попроси, зачем срать то пришел. Насрать себе в штаны можешь
Аноним 11/10/19 Птн 02:47:40 1493639112
>>1493610
>Нахуя хвастаться скоростью, если всё равно все пользуются умными указателями а не сырыми
В огороде бузина, а в киеве дядька. Если ты подразумевал, что умные указатели медленные, то это не так.
>Нахуя вызывать деструктор по типу указателя, если ясно что память помечёт
Что
>Нахуя вводить лямбды если с безопасностью пиздец
Хотя бы чтобы делать parallel_for без плясок с бубном
>Что за уёбище получилось в итоге
Сказал растоебок, у которого язык уже сравним по уебщиности, хотя ему 10 лет всего.
>>1493616
В оппосте есть ссылка "вместо шапки". Зайти туда. Найди параграф "памятка ньюфагу". Прочитай 5-й пункт.
Аноним 11/10/19 Птн 09:17:53 1493698113
>>1493639
>Сказал растоебок
С чего ты взял? Я на с++ уже 5 лет. До этого на Сишке и ObjC. И что бы вы думали? Несмотря на смартпойнтеры позавчера поймал сигфолт. Дело в том что с++ это механизм из говна, смазанный поносом. И если есть возможность пресекать хотя бы часть фейлов на этапе компиляции, то это просто космические технологии по сравнению с с++
Аноним 11/10/19 Птн 09:30:59 1493701114
>>1493698
> Несмотря на смартпойнтеры позавчера поймал сигфолт
> с++ это механизм из говна
Механизм из говна тут не c++
Аноним 11/10/19 Птн 12:07:09 1493782115
image.png (7Кб, 1075x33)
1075x33
image.png (10Кб, 715x118)
715x118
image.png (7Кб, 976x37)
976x37
Есть метод(см. первую пикчу). У него по дефолту значение параметра
> std::function<void(GLFWwindow✡, int, int)>
равняется функции со второго пика.
Также внутри первого метода есть вызов функции glfwSetFramebufferSizeCallback, которая принимает в качестве аргумента указатель на функцию вида
> void(GLFWwindow✡, int, int) То есть у меня std::function на нее ориентирован
Но почему-то, когда я передаю функции glfwSetFramebufferSizeCallback ссылку на std::function ее вида, то все нормально. Как такое вышло?
Аноним 11/10/19 Птн 12:11:25 1493788116
Байтоёбы есть ?
Аноним 11/10/19 Птн 12:15:37 1493792117
Аноним 11/10/19 Птн 12:44:24 1493811118
Может кто посоветовать хороших книг(желательно на русском) по c++17 или сайтов с задачками, а то основы изучены а задач для практики пока немного.
Аноним 11/10/19 Птн 12:47:10 1493814119
Аноним 11/10/19 Птн 12:59:26 1493822120
>>1493814
Я бы на твоем месте извинился.
Аноним 11/10/19 Птн 13:00:28 1493823121
>>1493811
Страуструп, ЯП C++ 2 издание
Аноним 11/10/19 Птн 13:04:14 1493828122
image.png (1120Кб, 594x824)
594x824
>>1493823
>Страуструп
Как можно советовать такое дерьмо, когда есть пикрелейтед?
Аноним 11/10/19 Птн 13:07:19 1493833123
>>1493828
Анон, эта книга для настоящих профессионалов, не пали годноту быдлу.
Аноним 11/10/19 Птн 15:12:16 1493926124
>>1493698
Ты худший вид растоебков - которые еще и на расте не пишут.
Аноним 11/10/19 Птн 16:21:18 1494009125
>>1493926
Нет, просто я ценю своё время и отвечаю за качество продукта
Аноним 11/10/19 Птн 17:13:48 1494052126
Встретил задачку send + more = money, решил написать программу решающую это говно. Но не получается. Точнее выходит неэффективное говно, которое тратит на решение больше 2 минут. Вот оно https://ideone.com/QCroGi
Как сделать заебись? Чувствую себя умственно отсталым.
Аноним 11/10/19 Птн 18:24:40 1494094127
>>1493617
Бампну вопрос, может есть какой-то способ сделать 2 окна активными?
Аноним 11/10/19 Птн 18:45:29 1494107128
>>1494052
Кек, решил в уме минут за 6, похоже брутфорс эффективнее :)
В алгоритм не вникал, но можешь попробовать вместо map использовать std::array<int, 128>
Аноним 11/10/19 Птн 21:50:21 1494232129
>>1494052
>>1494107
Брутфорсы разные бывают. Для ускорения перебора нужно как можно раньше понять, что мы идём не туда и игнорировать эту ветку.
Например в этой задаче можно поддерживать множество "занятых" цифр, а также идти с конца и смотреть подходящие варианты по последней цифре.

http://ideone.com/TocGUa
Закодил вашу хуйню за час где-то. В школе занимался олимпиадами, но за прошедшие 8-10 лет деградировал до уровня двачей
Аноним 11/10/19 Птн 21:58:07 1494246130
Пытаюсь вкатится в кресты. Хочу написать функцию, которая читает любую переменную и возвращает ее значение. Логика подсказывает, что я могу написать скажем 3 функции read для инта, флоата, и строки. Но мне кажется есть способ проще. Вот с выводом в консоль я решил вопрос так
template <typename T>
void print(T v){
cout <<v<<endl;
}

Мне казалось что с чтением тоже можноtemplate <typename T>
T read(){
T s;
cin<<s;
return s;
}
Но тут то я и соснул хуй когда дальше пытаюсь сделать
string s = read();

кресты я изучаю где то 20 минут, до этого писал на питоне и похпе, поэтому вопросы наверное максимально глупые

Аноним 11/10/19 Птн 22:01:32 1494248131
Сегодня я познал, почему c++ далеко не везде топовый язык.
Аноним 11/10/19 Птн 22:10:46 1494256132
>>1494246
> cin<<s;
лол


Просто во втором случае конпелятор не может вычислить тип Т.
Пиши s = read<string>();
Аноним 11/10/19 Птн 22:15:06 1494258133
>>1494256
Ну я же говорю, только 20 минут как начал. Почему то в Википедии такие простые штуки при работе с шаблонами не объясняются, но скорее всего я просто в глаза ебусь привыкнув к пхп.
Cin устарел, да?
11/10/19 Птн 22:15:53 1494259134
>>1494248
расскажи нам

>>1494246
Поток ввода никак не может понять, какая там переменная, максимум - вытащить циферку, и то, если ты ему скажешь, что там точно циферка.

Читай в строку, и дальше парси сам, вариантов немного
Аноним 11/10/19 Птн 22:16:06 1494260135
>>1494258
>>1494256
А, перенапрвление вывода не в ту сторону, точно.
Аноним 11/10/19 Птн 22:16:11 1494261136
>>1494258
Просто взять и писать на плюсах нельзя, возьми почитай Прату, сделай примеры, а потом вернись к своей хуйне. Это тебе не питон, тут даже хеллоуворд может не компилироваться.
Аноним 11/10/19 Птн 22:47:31 1494276137
>>1494248
Тоже начал учить волшебный js?
Аноним 11/10/19 Птн 23:00:50 1494287138
>>1494246
Ну да, динамический петушок не может в статическую типизацию.
Аноним 11/10/19 Птн 23:03:28 1494292139
>>1494287
Я задал вопрос и получил на него ответ, но спасибо за жалкую попытку самоутверждения, было забавно
Аноним 11/10/19 Птн 23:05:10 1494294140
>>1494276
>>1494259
Я вот подумал, что вам будет не очень интересно, поскольку я школьник, но сегодня писал олимпиаду и почувствовал разницу в скорости написания кода на питоне и плюсах. Мне также показалось что плюсы тяжелее читать. Как же обидно когда алгоритм в голове составил, а записать нормалтно не можешь
Аноним 11/10/19 Птн 23:08:20 1494298141
>>1494294
Нихуя себе откровения, на языке тс динамической типизацией и высоком уровне абстракции из коробки писать проще! Охвау
Аноним 11/10/19 Птн 23:10:25 1494301142
>>1494298
А как научиться переносить мысли из головы в код как можно точнее? Где задачи на эту тему взять? Потому что я такую хуйню написал что пиздец
Аноним 11/10/19 Птн 23:27:09 1494324143
>>1492800
это же какая-то ебонутость сиплюсов.
можно же (не пердоля ничего остальное даже) препроцесором генерировать отдельный файл имплементации для методов, которые не нужно инлайнить, и конпелировать всё по-нормальному, а в процессе написания держать все в хедерах, чтобы не ебать мозги несколькими файлами, иметь комменты для функций рядом с кодом, не ебать себя повторением хедеров функций в двух местах, не ебать себя переключением между хедером и имплементацией. все нормальные текстовые редакторы поддерживают сворачивание кода, поэтому "загленул в хедер сразу все увидел" не аргумент.

ухожу на раст.
Аноним 11/10/19 Птн 23:31:03 1494333144
Есть какой-то резон учить/переходить на Qt Quick, если мне норм с Qt Widgets?
Аноним 11/10/19 Птн 23:33:47 1494339145
>>1494324
Не возвращайся только потом
Аноним 11/10/19 Птн 23:38:41 1494355146
>>1494339
>он думает, что я человек своего слова и действительно уйду на раст
Приятно видеть, что кто-то еще не потерял веру в людей.
Аноним 12/10/19 Суб 00:42:07 1494407147
Аноним 12/10/19 Суб 00:52:05 1494412148
>>1494407
Во многих языках есть модули. Не нужно отдельно писать интерфейс и реализацию, достаточно скомпилировать модуль, а затем его импортировать в своей программе. Ничего никуда не инклудится, всё компилится по отдельности. Хорошо это или плохо, думай сам.
Аноним 12/10/19 Суб 03:08:43 1494434149
>>1494412
Ну да, пожалуй удобно.
Аноним 12/10/19 Суб 04:35:57 1494445150
Аноним 12/10/19 Суб 04:38:56 1494446151
>>1493546
>В каких конкретных случаях создание ссылки продлевает жизнь объекта?
В ньюфаг-тред, шагом марш.
Аноним 12/10/19 Суб 11:15:53 1494531152
Аноним 12/10/19 Суб 15:04:08 1494693153
Как отправить нажатие мышки с активного окна на неактивный рабочий стол?
Аноним 12/10/19 Суб 18:16:35 1494918154
Анончики, помощь нужна. Есть у меня двусвязный список, в виде класса. Надо его отфильтровать и вернуть новый список, не трогая старый. Можете описать алгоритм, как это сделать? Я совсем извращаться начал, написал метод, который выдает массив из элементов списка, прошедших фильтрацию и в другой функции вставляю элементы массива в новый список и возвращаю его. В итоге, исходный список почему-то заменяется новым.
Аноним 12/10/19 Суб 18:49:22 1494955155
Я не понимаю, объясните.
Создаю файл заголовка и в нем описываю класс. В классе есть один метод.
Создаю файл с кодом, в нем описываю метод.
Все ок.
Создаю класс. Обращаюсь к методу. Вижу ошибку "неопределенная ссылка к 'методнейм' " (undefined reference to 'classname::methodname')
Переношу определение метода в файл заголовка - все работает.
Что за хуйня?
Аноним 12/10/19 Суб 18:56:25 1494959156
>>1493326
Ты просто макакен-ооп-плюсовик. Я все из написанного понял и в целом согласен
Аноним 12/10/19 Суб 18:59:05 1494962157
>>1494918
Дцп-макакен пытается понять иммутабнльность, но не получается
Аноним 12/10/19 Суб 19:03:08 1494964158
>>1494918
Лаба что ли? Идешь циклом по списку и делаешь push_back в новый список элементам, удовлетворяющим условию.
Если не лаба, то чем тебя стл не устравивает.
Аноним 12/10/19 Суб 19:11:47 1494971159
>>1494964
если не лаба - то как программист он явно неоче
Аноним 12/10/19 Суб 19:17:28 1494976160
Аноним 12/10/19 Суб 20:18:50 1495009161
Как реализовать уведомления об обновлениях в чате? Клиент по какому-то каналу должен раз в n [промежуток времени] опрашивать сервер о новых обновлениях? Нельзя какое-то подобие сигналов в Qt реализовать?
Аноним 12/10/19 Суб 20:27:49 1495016162
>>1494918
Копируешь список и фильтруешь его.
Аноним 12/10/19 Суб 21:10:03 1495041163
>>1495016
Куда копировать? Список - это же не массив, там данные рандомно в памяти расположены и связаны указателями.
Аноним 12/10/19 Суб 21:26:09 1495049164
Аноним 12/10/19 Суб 21:29:59 1495052165
>>1495049
Да я уже загуглил. Вопрос еще один: http сервер не хранит состояние, мне нужно передать юзеру адрес второго сервера, который будет посылать уведомления об обновах, а юзер будет их с мейн сервера забирать?
Аноним 12/10/19 Суб 21:50:04 1495071166
>>1494955
ты не компилируешь имплементацию класса. нужно делать
g++ main.cpp bdsm.cpp
Аноним 12/10/19 Суб 21:51:49 1495072167
>>1495071
ну или там не линкуеш её че там еще в плюсах.
у кого-нибудь шишка зачешется выебнуться и меня обязательно поправят.
Аноним 12/10/19 Суб 22:24:15 1495094168
>>1495041
Копируешь каждый элемент списка и связываешь их в том же порядке.
>Куда
Выдели память в куче и туда и копируй, что ты как маленький.
Аноним 12/10/19 Суб 22:27:48 1495100169
>>1494955
Используй вижуал студию, будет думать за тебя
Аноним 12/10/19 Суб 22:30:57 1495105170
>>1494531
>Кажется, нашёл статью, где они это "починили"
Там запрет переопределения параметра шаблона в планах на будущее
> Here’s a list of what’s left to come in future updates to MSVC in Visual Studio 2017...
> ...
> 5. Neither redeclaration of template parameters and redefinition of template function arguments as local names are reported as errors.
Аноним 13/10/19 Вск 03:46:30 1495292171
15272794447840.jpg (137Кб, 500x429)
500x429
Посоветуйте книги по Winapi, думал начать с Рихтера, но не староват будет?
Аноним 13/10/19 Вск 04:46:01 1495305172
Аноним 13/10/19 Вск 06:30:24 1495322173
>>1495292
Зачем по винапи писать книги? На MSDN и так все расписано с примерами. Если хочешь углубиться в архитектуру оси, то читай Windows Internals 7 часть, 1 книга уже вышла, вторая будет после нового года.
Аноним 13/10/19 Вск 08:02:56 1495343174
эстэдэ::стринг строчка;
эстэдэ::син >> строчка;
эстэдэ::каут << строчка;
Аноним 13/10/19 Вск 08:50:40 1495356175
15667900104490.jpg (406Кб, 875x1250)
875x1250
>>1494232
Пиздец анон, не могу понять как работает твой код
Аноним 13/10/19 Вск 08:54:01 1495358176
Аноним 13/10/19 Вск 09:00:32 1495361177
15598299648160.jpg (180Кб, 1037x584)
1037x584
Аноним 13/10/19 Вск 09:11:24 1495366178
15668708040330.jpg (608Кб, 1060x1500)
1060x1500

>>1494232
Сколько ты зарабатываешь, анон?
Аноним 13/10/19 Вск 10:01:07 1495381179
1570277077808.png (72Кб, 386x361)
386x361
Аноним 13/10/19 Вск 12:24:13 1495436180
15674199303240.jpg (919Кб, 1080x1080)
1080x1080
Почему на си++ ещё кто-то пишет, если для всего низкоуровневого используется си, так как его стандартная либа легче и сам язык ближе к ассемблеру, а для крупных коммерческих энтерпрайз проектов удобнее использовать си шарп?
Аноним 13/10/19 Вск 13:05:46 1495455181
>>1495436
Никто на нем не пишет, в этих итт тредах мы просто траллим нюфагов.
Если ты не заметил, то все пришедшие с лабами на якобы с++ в разделе реально используют из крестов только ввод/вывод, остальное все - чистейший си.
Аноним 13/10/19 Вск 13:51:21 1495494182
>>1495436
Двачую, за растом будущее
Аноним 13/10/19 Вск 14:27:12 1495536183
>>1495436
Попробуй что-нибудь большое написать на си. (Или просто разобраться в кодовой базе FFmpeg)
Все ФП веруны, что обсирают ООП (и в особенности крестовый недоООП), просто не пробовали что-то большое делать на чисто процедурном языке.

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

Си++ лучше Си в плане выразительности, но ты ещё и не платишь за то, что не используешь. Лучшее из двух миров. На словах.

Потом можно сказать, что нахуй С, я возьму C#. А в требованиях проекта - кроссплатформенность + быстрота. И тут уже можно пососать хуйца. (А можно и не пососать. От опыта, наверное зависит.) Плюс, C# - это вендор-лок. Ну или был им до недавнего времени.

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

ИМО, не обоссывайте.
Аноним 13/10/19 Вск 14:32:01 1495542184
>>1495536
мой первый в жизни пет проект был игрой на си
я тогда понял что структуры рулят лол
Аноним 13/10/19 Вск 14:38:41 1495551185
>>1495542
typedef Xynta struct XyntaStruct*;
или в наглую?
Аноним 13/10/19 Вск 14:39:06 1495554186
>>1495551
> typedef Xynta struct XyntaStruct;
То есть
typedef struct XyntaStruct
Xynta;
Аноним 13/10/19 Вск 14:40:14 1495556187
>>1495554
Сука. За что /code выпилили? Это же как суп ножом есть.
Аноним 13/10/19 Вск 14:44:10 1495560188
>>1495554
еще хуже (я так и не выучил толком си так что думаю что еще хуже)
в основном
typedef struct {.....} xynta
только линкед лист делал структурой
typedef struct node {.....} node
Аноним 13/10/19 Вск 14:47:38 1495565189
>>1495436
Везде, где требуется высокая производительность, используются плюсы. На нем пишут движки браузеров, виртуальные машины и т.д.
Инкапсуляция делает код более читабельным, есть шаблоны, которые иногда упрощают жизнь, есть защита от дурака в виде модификаторов доступа, всякие удобные штуки вроде перегрузки операторов, референсы и т.д.
>>1495536
>просто не пробовали что-то большое делать на чисто процедурном языке.
C++ очень часто используют без RTTI, ибо оверхед, это недо-ООП и скорее ближе к процедурному программированию с синтаксическим сахаром в виде инкапсуляции, чем к тру-ООП.
Аноним 13/10/19 Вск 14:54:01 1495578190
>>1495560
Понял. Я имел в виду, прятал (инкапсулировал) ли ты детали реализации структуры в сурс файле, или нет.

>>1495565
> C++ очень часто используют без RTTI, ибо оверхед, это недо-ООП и скорее ближе к процедурному программированию с синтаксическим сахаром в виде инкапсуляции, чем к тру-ООП.
Йеп. Но чистая сишка ещё страшнее, не?
И зачем нужет RTTI? Нужно просто сделать хорошую архитектуру, с чёткими интерфейсами и прочим.
Аноним 13/10/19 Вск 15:05:03 1495599191
>>1495578
>И зачем нужет RTTI?
Чтобы работали виртуальные методы. Без виртуальных методов нет полиморфизма, а без полиморфизма нет ООП. Без RTTI C++ это процедурный язык.
>Но чистая сишка ещё страшнее, не?
Да, поэтому C++ и используют.
Аноним 13/10/19 Вск 15:18:47 1495610192
>>1495599
Это был сарказм, btw.
V-тэйблы же работают без RTTI? Или я что-то путаю?
Имеется в виду вообще весь механизм, или же доступная программисту часть?

Если что, всё моё понимание RTTI составлено из вот этой статьи в википедии и опыта работы с самописной динамической идентификацией типов в одной компании.
https://ru.wikipedia.org/wiki/Динамическая_идентификация_типа_данных
Аноним 13/10/19 Вск 15:25:16 1495617193
>>1492442 (OP)
Знакомый забашлял бабла в GeekBrains и пошел туда на курсы, в конце там еще и сертификат дают. Насколько хороша эта тема? Профит будет?
Аноним 13/10/19 Вск 15:38:02 1495624194
>>1495617
Конечно будет. Ложное чувство получения знаний и поднятие морального духа. А мог бы просто книжку прочитать
Аноним 13/10/19 Вск 15:41:03 1495628195
>>1495624
Так есть хоть какой-то профит от подобных курсов при трудоустройстве? сам планирую пойти Сертификат роль сыграет?
Аноним 13/10/19 Вск 15:47:13 1495632196
>>1495628
>Так есть хоть какой-то профит от подобных курсов при трудоустройстве?
>C++
Нет, это скорее минус.
Аноним 13/10/19 Вск 15:47:16 1495633197
>>1495628
Сомневаюсь что это решающую роль сыграет. Как на собеседовании себя покажешь, такой и будет результат, это максимум небольшой плюс будет. Всё-таки это не MIT какой-то, а отчесественная хуйня для выкачивания денег.
Аноним 13/10/19 Вск 16:13:18 1495652198
>>1495610
V-тейблы это и есть RTTI.
Аноним 13/10/19 Вск 16:21:18 1495656199
>>1495652
RTTI это же про typeid и dynamic_cast. Виртуальные таблицы и без них спокойно работают.
Мимопроходил
Аноним 13/10/19 Вск 17:34:15 1495709200
>>1495656
Погуглил сейчас, да, ты прав.
Аноним 13/10/19 Вск 17:46:04 1495721201
>>1493610
использование умных указателей (из стандарта) вообще не влияет на скорость выполнения по сравнению с сырыми, есть небольшие затраты на память и все


Аноним 13/10/19 Вск 17:49:45 1495728202
>>1493610
лямбды в с++ - это просто синтаксический сахарок в языке, в случае когда нужно на один раз передать callable сущьность, те чтобы не писать функторы и обычные функции для одноразового применения

Аноним 13/10/19 Вск 17:49:46 1495729203
>>1495721
> умных указателей
> т.е. и shared тоже
А как же тот такт процессора на refcount?
А? А?!
Аноним 13/10/19 Вск 17:56:23 1495736204
>>1495729
шаред в 99% не нужен. Юник - бесплатный
Аноним 13/10/19 Вск 17:59:25 1495743205
>>1495736
Херасе.
Я пытаюсь по умолчанию везде пихать юник, а потом мне всё равно приходиться переделывать на шаред.

Могу сказать наоборот: в 99% юник не нужен.
Аноним 13/10/19 Вск 18:17:23 1495769206
>>1495743
А мог бы просто передавать по значению и не ебать себе мозг.
Аноним 13/10/19 Вск 18:22:50 1495779207
>>1495769
Постоянная необходимость в Big 5 и вероятность object slicing'а дружно смеются мне тебе в лицо.
Аноним 13/10/19 Вск 18:24:04 1495782208
>>1495743
Что-то у тебя с графом владения не то.
Аноним 13/10/19 Вск 18:27:53 1495787209
>>1494918
напиши "свободную" функцию фильтрации которая принимает список который нужно отфильтровать, условия фильтрации, а возвращает новый список, в котором будут отфильтрованные элементы


Аноним 13/10/19 Вск 18:32:24 1495796210
>>1495743
Попробуй дизайнить механизмы владения получше. Или, вообще хотя-бы пытаться думать, что у тебя и чем должно владеть.

Пихать всюду шаредпоинтеры, потому-что ты не знаешь, как у тебя что и где - это нихуевый такой антипаттерн и code smell
Аноним 13/10/19 Вск 18:36:06 1495800211
>>1495743
Мда, за километр видно, что у тебя память течет в проекте. В расте твой говнокод даже не скомпилился бы и ты бы рыдал как побитая шлюха над ошибками борроу чекера, размазывая сопли по щекам.

>>1495779
Сука, до сих пор блевать тянет от rule of five, особенно после раста, где от этой хуйни сознательно отказались и конструкторы простые как слеза младенца.
Аноним 13/10/19 Вск 18:36:40 1495801212
>>1495796
>>1495782
Ок. Не то чтобы я был старше джуна и мог бы кому-то всё испортить, но всё равно полезно свой косяк увидеть.
Аноним 13/10/19 Вск 18:37:06 1495802213
>>1495779
Ты просто не умеешь готовить value семантику
Аноним 13/10/19 Вск 18:37:30 1495803214
>>1495536
кстати, ffmpeg всегда приводят в пример того, что архитектура этого проекта требует ооп-методик (в частности как динамического, так и статического полиморфизма)
но он написан на си, и в этом проекте, по сути, возможности ооп эмулируются средствами си

Аноним 13/10/19 Вск 18:40:04 1495807215
>>1495565
>тру-ООП
Это какое такое? То, где все заканчивается срачем на тему "как я выбирал свой любимый паттерн из GoF?"
Аноним 13/10/19 Вск 18:45:32 1495817216
>>1495807
>>тру-ООП
>Это какое такое?
Конечно же такое, как анал кэй придумал.
Аноним 13/10/19 Вск 18:50:26 1495831217
>>1495617
если хочешь учится за деньги (на русском языке) - то 4 курса по с++ на курсере от яндекса оптимальный выбор на данный момент

Аноним 13/10/19 Вск 21:21:41 1495976218
>>1495807
Да забей, я долбоеб с лабами.
Аноним 14/10/19 Пнд 16:05:22 1496479219
Как вкатиться в boost?
Аноним 14/10/19 Пнд 16:17:17 1496492220
>>1496479
Буст это набор библиотек под разные задачи, а не одна библиотека.
Аноним 14/10/19 Пнд 19:00:02 1496590221
>>1496479
А тебе зачем? Там много такого, что тебе уже не пригодится, потому что уже есть в стандарте. Читай примеры по интересующим библиотекам, типа gil, hana, geometry
Аноним 14/10/19 Пнд 22:46:41 1496830222
const char temp[11] = {'i', 'n', 'p', 'u', 't', char(i + 48), '.', 't', 'x', 't'};
std::ifstream input;
nput.open(temp);
if (!input.is_open()){
std::cout << "error: Could't load \"" << temp << "\"" << std::endl;
return 1;
}

Файл input0.txt лежит вместе с main.cpp и CMakeLists.txt, но якого-то хуя не открывается, IDE CLion, хз почему и как фиксить, хелп
Аноним 14/10/19 Пнд 22:48:40 1496831223
>>1496830
Всё, проблема решилась - CLion помещает сборки в отдельную папку
Аноним 14/10/19 Пнд 23:00:15 1496843224
>>1496830
>const char temp[11] = {'i', 'n', 'p', 'u', 't', char(i + 48), '.', 't', 'x', 't'};
'\0' ?
Аноним 14/10/19 Пнд 23:02:26 1496845225
>>1496843
при такой инициализации все, что не указано, будет zero initialized, включая, собстно, последний элемент
Аноним 14/10/19 Пнд 23:15:03 1496853226
Qt, Winforms, WPF, UWP
На чём лучше сегодня писать GUI?
Аноним 14/10/19 Пнд 23:23:14 1496862227
>>1496853
Лучше сделать вебапп на питоне который тягает твою либу на крестах. А так зависит от задачи. Qt самый универсальный вариант, но для венды можно подумать
Аноним 14/10/19 Пнд 23:37:02 1496873228
>>1496862
>Лучше сделать вебапп на питоне
Чем лучше?
Аноним 14/10/19 Пнд 23:48:03 1496885229
>>1496873
Юниксвей - просто, композабельно, доступно с кучи клиентов
Даже архитектура твоей либы будет скорее всего продуманней стандартного button1click
Аноним 15/10/19 Втр 00:06:18 1496895230
Аноним 15/10/19 Втр 02:19:39 1496930231
>>1495721
Шаред не бесплатный и вообще хуита, ногу отстреливает. Юник заебись, везде юзаю, брат жив.
Аноним 15/10/19 Втр 02:29:57 1496933232
>>1496930
Если грамотно использовать шаред (а именно - не тягать счетчик ссылок постоянно), то он почти бесплатный и не хуже юника.
А так 90% случаев покрывает банальный std::vector, а еще 9% - другие контейнеры. Не так уж указатели в современном С++ нужны.
Аноним 15/10/19 Втр 03:19:38 1496941233
>>1496933
если грамотно использовать юник, шаред вообще не нужен
Аноним 15/10/19 Втр 04:05:38 1496959234
15295108737570.jpg (19Кб, 480x325)
480x325
>>1494009
>я отвечаю за качество продукта
>написал крашащуюся хуету – это не я, это язык!! Язык говно просто!
Аноним 15/10/19 Втр 05:49:44 1496973235
а ну расскажи за умные указатели...
Короче, есть умный указатель shared_ptr<Data> data;

есть некоторый класс, который должен работать с этим data , он хранит некий указатель mdata. Но при этом этот класс не должен захватывать указатель data: если data будет уничтожен, то mdata должен обнулиться.


Если mdata сделать shared_ptr, то он просто увеличит счетчик и не даст уничтожить указатель в data. мне это не надо.
Мне надо именно чтобы mdata становился нулем, когда data уничтожается.


Как? weak_ptr? меня просто задолбало в гугле что про weak_ptr все как попугаи тявкают про перекрестные ссылки, вместо нормальных вещей. Не понимаю (да, я дурачок)



Аноним 15/10/19 Втр 06:26:42 1496981236
>>1496973
Что происходит с data при копировании класса? От этого зависит ответ
Аноним 15/10/19 Втр 06:46:50 1496985237
>>1496981
при копировании класса все mdata этих классов должны указывать на data (но да, эти классы тоже не должны увеличивать счетчик data, и если data обнулился, то все mdata тоже должны обнулиться)


То есть задача такая - класс Foo получает указатели на методы классов, которые потом вызовет через оператор () (ну некий вариант келбэка... точнее это реализация slot and signal).

При этом этот класс не должен захватывать сам класс, чей метод он хранит (я не хочу наследовать классы - лишние действия если можно без, просто написав как-то так = bind(foo, Foo::bar).


Если делать всё через голые указатели, то возникает проблема - если класс удален, то Foo начинает вызывать метод невалидного класса.
С другой стороны если Foo будет хранить shared_ptr на класс, то тогда класс нельзя будет удалить, его метод все равно будет вызываться.
если сделать ручную отвязку... ну ручная отвязка же, это как удалять память в ручную - забыл и потекло.


Ну и короче в Foo нужен такой умный указатель, который не увеличивает счетчик ссылок. а в случае когда класс удаляется, обнуляет свой указатель
Аноним 15/10/19 Втр 07:22:23 1496992238
>>1496985
Адреса указателей - наше всё.
Си-с-классами-блядок
Аноним 15/10/19 Втр 07:22:32 1496993239
гребанные указатели... как заставить это работать
std::weak_ptr<Type> t;
typedef void(Type::Func)(Args ...);

void operator()(Args ...args) const noexcept final {
if (t.lock()) {
(t->
f)(args ...);
}
}

не работает, выкидывает ошибку на *f
Аноним 15/10/19 Втр 07:27:41 1496995240
image.png (30Кб, 713x533)
713x533
>>1496993
мля, какой дебильный парсер двача. да еще и пастебин сдох

Короче, пикча

выдает ошибку, нельзя указатель на функцию (я не ебу зачем и почему - делал по гуглу)
Аноним 15/10/19 Втр 07:59:29 1497013241
Аноним 15/10/19 Втр 08:13:54 1497021242
>>1497013
а оператор копирования разве не затрет указатель Data() при yoba.mdata = data.mdata;?
Аноним 15/10/19 Втр 08:15:03 1497024243
>>1497021
На этой строчке копируется shared_ptr с увеличением счетчика
Аноним 15/10/19 Втр 08:16:36 1497025244
Ключевой момент тут в двойной косвенности. Есть некоторая коробка, на которую указывают йобы, а вот коробка уже указывает на data. Data при своей деструкции обнуляет коробку, и тогда йобы знают, что они указывают на нуль.
Аноним 15/10/19 Втр 09:31:19 1497048245
IMG201910150930[...].jpg (109Кб, 1280x719)
1280x719
Как фиксить?
Аноним 15/10/19 Втр 09:36:42 1497049246
>>1497024
но вообще у меня вроде получилось и через weak_ptr...


Хотя вот интересно, а weak_ptr::lock слишком тяжелая операция,
Аноним 15/10/19 Втр 09:44:48 1497054247
>>1497049
По-моему код сweak ptr упадёт после удаления shared ptr.
Аноним 15/10/19 Втр 10:02:28 1497066248
>>1497054
хм, надо посмотреть
Аноним 15/10/19 Втр 10:37:11 1497085249
>>1497049
Поищи скрытый конструктор shared_ptr на хабре
Аноним 15/10/19 Втр 10:55:27 1497096250
>>1496959
Если есть способы минимизировать риски, то глупо ими не пользоваться
Аноним 15/10/19 Втр 13:06:28 1497153251
>>1495729
ну смотри: если ты не используешь sharep пойнтер, то тебе самому надо будет делать подсчет ссылок руками, те по затратам на скорость исполнения все равно так же будет


Аноним 15/10/19 Втр 13:25:14 1497171252
>>1497153
Можно написать сборщик мусора
Аноним 15/10/19 Втр 13:25:52 1497174253
Ку, мне препод предлагает иследовательскую работу в анрил энжине с vr. Я в курсе про блюпринт, но с таким знанием меня потом нахер пошлют, собственно сабж, че читать что-бы начать разбираться? Опыт есть с юнити, но не с vr.
Аноним 15/10/19 Втр 13:26:22 1497175254
>>1496973
дык и используй weak_ptr
в чем проблема?
или ты не понимаешь механизма его работы?
вкратце, он не проверяется на "нулевость", а становится невалидным
а чтобы с ним поработать, нужно получить из него shared_ptr, и, если он не валидный, то этого не получится сделать..
так с ним и работают..
у тебя типичная задача для weak_ptr, только, подозреваю, ты не понимаешь как с ним работать..

Аноним 15/10/19 Втр 13:44:49 1497187255
Аноним 15/10/19 Втр 14:07:23 1497200256
Сап. Хочу с использованием boost::program_options сделать чтобы
./a.out --option 1 2 --option 2 -3 --option -3 +4 (тут именно через пробелы)
возвращало
std::vector<std::pait<int, int>>
Можно ли это сделать без большой ебли, или проще передавать значения в виде --option 1:2 и руками разбивать и разбирать?
Аноним 15/10/19 Втр 14:19:22 1497206257
>>1497174
>иследовательскую работу в анрил энжине
Это как это вообще?
Будешь открывать доселе невиданные возможности УЕЧ?
при том, что сам в нем не бум-бум, лол

Российское образование, такое российское...
Аноним 15/10/19 Втр 15:01:09 1497226258
>>1497206
Я предполагаю исследование для самого себя
Аноним 15/10/19 Втр 15:05:37 1497227259
>>1497206
И все-таки есть что-то посоветовать?
Аноним 15/10/19 Втр 19:13:53 1497360260
Котаны, хочу писать сетевое ПО на плюсах, в плюсах не полный новичок.
Какую либу для сокетов-хуёкитов посоветуете? Я писал беркли сокеты на Си, но они несовместимы с виндой (да, я линуксоид).
И вообще, как плюсы для сетевого программирования? Или лучше другой язык юзать?
P.S.: пиздон слишком медленный для этого, имхо, поэтому не предлагать.
Аноним 15/10/19 Втр 19:38:34 1497371261
>>1497360
Вроде как то можно писать на Беркли в винде с помощью костылей, но я не уверен.
А так у винды свои сокеты, их и гугли.
Аноним 15/10/19 Втр 20:26:49 1497403262
1535434878624-0.jpg (63Кб, 680x641)
680x641
Пытаюсь в будущие. Есть пул сепуляторов. Я могу вернуть future<сепулька> сейчас, а назначить конкретный сепулятор делать эту сепульку позже с помощью bind или еще чего-нибудь?
Аноним 15/10/19 Втр 20:34:22 1497411263
>>1497360
boost.beast, boost.asio, QtNetwork проще всего, для http - C++ REST SDK от мелкомягких. Первые два низкоуровневые, на них писать не очень приятно, кьют я лично использую я студент мне нравится, если кьют освоишь то вообще заебись будет, последний не использовал, но рекомендовали сеньоры-помидоры в чатах, говорят мол заебись.
Аноним 15/10/19 Втр 20:37:05 1497417264
>>1492442 (OP)
Уснул на работе после обеда. Всем похуй.
С вами такое бывало?
Аноним 15/10/19 Втр 20:41:56 1497424265
>>1497360
poco библиотеку ещё можешь чекнуть.
Аноним 15/10/19 Втр 20:44:31 1497426266
>>1497403
Отвечая на свой вопрос: тривиально, оказывается.

Аноним 15/10/19 Втр 20:44:51 1497427267
Аноним 15/10/19 Втр 20:49:17 1497431268
>>1497417
Не один раз. Задача сложная?
Аноним 15/10/19 Втр 21:48:16 1497496269
>>1497360
Винсок - калька с беркли
Аноним 15/10/19 Втр 22:01:02 1497513270
>>1497431
>Задача сложная?
Нет, задачи интересные, это мой недосып виноват.
На самом деле я очень рад, что смог найти работу с гибким графиком и хорошим коллективом.
Аноним 16/10/19 Срд 00:05:11 1497603271
Сап, двощ
Только без рофлов, какие возможности трудоустройства есть в 2к19, зная плюсы?
Что пишут, что НЕ пишут? Сетевые приложения пишут на плюсах? Заранее спс
Аноним 16/10/19 Срд 00:07:09 1497604272
>>1497603
пишут дохуя всего, включая сетевые приложения. Если ты прям хочешь вкатиться в плюсы - задрочи алгоритмы и иди в яндекс. Ну или научись сосать хуй и иди в мейлру. Потом перекатишься в нормальное место
Аноним 16/10/19 Срд 00:23:25 1497612273
>>1497174
> че читать что-бы начать разбираться?
Открой демки УЕ4 и по ним разбирайся. Куча материалов и демок в инете, гугли. В блюпринтах ничего сложного нет, кроме того, что вместо 10 строчек кода, ты лепишь мышкой паука на два экрана. Это простой скриптовый язык с ООП. ВР приложения от обычных фактически ничем не отличаются. То есть ты можешь любое анриловское приложение запустить в ВР режиме, и оно сразу заработает. Самому придется только работу с контроллерами делать. С 99% вероятности С++ тебе не понадобится - почти все делается блюпринтами. С крестами там тоже ничего сложного, кроме того, что у них там свой препроцессор и своя система сборки на шарпе, в результате чего все очень неспешно компилируется.
Самый большой гемморой будет, если вы нацелитесь на мобильные устройства вроде Oculus Go/Quest. Там мало того, что сам анрил для мобилок не очень припособлен (куча ограничений, куча багов годами висят), так еще и пидоры из фейсбука могут сломать API в любой момент, так что все снова заработает только в следующей версии УЕ4. Самсунг так вообще поддержку дропнул для своих очков. Теперь чтобы с ними работать, надо какие-то древние версии анрила качать. Короче, лучше не связывайся с мобилками или приготовься тушить жопу регулярно.
Аноним 16/10/19 Срд 00:33:48 1497617274
>>1497206
>Российское образование, такое российское...
Сейчас, бум всей этой ВР поеботы в образовании. Не только в РФ, на западе тоже. С игрушками все умерло, а университеты, наоборот, грантов набрали и лепят все подряд в ВР.
Аноним 16/10/19 Срд 01:00:47 1497631275
>>1497617
шо поделаешь
технология есть, а человеческий организм не принимает..
некоторые люди блюют после сеанса vr в шлеме, у многих болит голова, болят глаза..
по итогу в продакшон это худо проталкивается, остается только допиливать гранты в вузах


Аноним 16/10/19 Срд 01:10:53 1497634276
1.png (29Кб, 587x615)
587x615
>>1497603
Чтобы быть крестомакакой в 2019 и получать синьёрские 75к, тебе придется выучить qt+boost, уметь пилилить фронт на реакте и бэк на голанге. Такие дела.
Аноним 16/10/19 Срд 01:15:27 1497642277
>>1497631
Это все дело привычки, причём недолгой. Основная проблема вр это хуевое железо и софт. Потому что аджайлоебы не могут в хардваре
Аноним 16/10/19 Срд 01:29:40 1497648278
image.png (130Кб, 854x658)
854x658
>>1497634
Бля, где вы такие вакансии находите вообще. Глянул что в моём городе по мидлам-сеньорам, вот первое что попалось, вполне адекватные требования и зарплата в 3к, что для моей страны практически равнозначно богу, который может позволить всё.
Аноним 16/10/19 Срд 01:33:54 1497651279
>>1497634
ты же понимаешь, что это вакансия работает в 2 случаях:

1) студент без опыта, который просто хочет жрать. наверняка ему еще и зп уменьшат раза в 2
2) какой-то старый пердун, который уже впринципе не можем/хочет ничего нового учить

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

// мимо жава макака
Аноним 16/10/19 Срд 01:39:34 1497654280
Аноним 16/10/19 Срд 01:42:54 1497658281
>>1497654
А что не так? Qt - это язык, транслирующийся в С++ программой moc.
Аноним 16/10/19 Срд 01:49:48 1497661282
>>1497651
>2) какой-то старый пердун, который уже впринципе не можем/хочет ничего нового учить
Хотел бы я посмотреть на фуллстак старого пердуна на реакте и голанге.
Аноним 16/10/19 Срд 01:51:23 1497662283
>>1497661
если реально нужен с++ - то возьмут и старого пердуна, который только с++ и знает. в придачу к нему поставят студента-зумерка
Аноним 16/10/19 Срд 02:00:24 1497663284
>>1497662
старые пердуны не знают С++, они умеют месить сиговно только
Аноним 16/10/19 Срд 02:40:22 1497673285
>>1497662
студента зачем? чтобы веки как вию поднимал?
Аноним 16/10/19 Срд 04:22:44 1497685286
а забористая у меня сегодня трава

Короче, кому надо сделать систему событий (ну например когда окошко размер изменило), без всяких сложных штук:
https://ideone.com/Pz9lwn

(это еще черновое, там надо сделать защиту на случай если класс FooBla будет уничтожен (помечено todo) и скрыть уродство Connect
Аноним 16/10/19 Срд 05:05:55 1497691287
Аноним 16/10/19 Срд 05:16:52 1497693288
>>1497685
Переделывай. Я должен сам типы параметров функций дописывать? Почему нет поддержки типа возврата?
Аноним 16/10/19 Срд 05:31:59 1497696289
>>1497693
>>Я должен сам типы параметров функций дописывать?
В EventSignal - да, для каждого события ведь свой список (для ресайза окна, два параметра, для клавы - описание клавиши и т.д.)

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

Вообще этот код, это некий вариант паттерна signal and slot (который например используется в QT)
Но этот паттерн довольно абстрактен и не без проблем (например мертвые указатели)

Код сейчас переложу, там решена проблема с мертвыми указателями, да и выглядит получше
Аноним 16/10/19 Срд 05:36:51 1497697290
>>1497696
Зачем ты переизобретаешь std::function?
Аноним 16/10/19 Срд 05:40:54 1497698291
>>1497696
Компилер знает, что функция Resize = void(uint32, uint32). Дальше думай.
Аноним 16/10/19 Срд 05:48:21 1497702292
>>1497697
затем что:
- а) std::function очень тяжелый и тормозной (про это где-то в гугле была статья, с бенчмарками)
- б) std::bind все равно также и выглядит
- в) не обрабатывает ситуацию, когда класс метода будет уничтожен
- г) все равно нужно делать обертку
- д) не по феншую
- е) чтобы нет?
Аноним 16/10/19 Срд 05:49:10 1497703293
>>1497698
в каком хоть направлении думать?

что если у меня там будет KeyDown(Key, bool, bool)? В
Аноним 16/10/19 Срд 06:00:36 1497705294
Аноним 16/10/19 Срд 06:07:04 1497706295
>>1497702
Понятно, стандартное ко-ко-ко велосипедостроителя про дикий оверхед стандартной библиотеки, при чем на самом деле велосипедостроитель не знает и не понимает нихуя, но уже бежит делать свою имплементацию.
Ты сначала досканально изучи, как оно работает, изучи, где именно он тормозит и почему, и, возможно, ты захочешь сделать свой вариант под твою задачу. Но скорее всего не захочешь.
А та хуйня, которой ты занимаешься, нихуя хорошего в плане профессионального развития тебе не принесет.
Аноним 16/10/19 Срд 06:07:37 1497707296
Аноним 16/10/19 Срд 06:10:15 1497708297
Аноним 16/10/19 Срд 06:17:49 1497709298
обновил код
https://ideone.com/wseHBU

- теперь оно умеет чистить память от мертвых указателей. То есть если класс слушателя будет уничтожен, никаких утечек, и ошибок памяти.
- Connect теперь выглядит получше, как std::bind

- в примере показано что на мой класс слушателя можно вешать сколько угодно функций с разными сигнатурами.


Минус: - пришлось сделать макрос __EVENTLISTENERBODY.
сначала я хотел сделать через наследование от IEventListener... но тут множественное наследование, и компилятор не уверен какой Register() вызывать. даже с подсказками там серьезный варнинг
Если кто подскажет как улучшить...

Аноним 16/10/19 Срд 06:19:35 1497710299
>>1497708
>Я на эту, как ты выразился, херню потрачу всего день, так что я ничего не теряю.
А лучше бы бабу нашел. Потому что вместо всей этой хуйни с дрочем на пост пятилетней давности можно было бы набрать аж 4 комады

$git clone https://github.com/skarupke/std_function
$cd std_function
$g++ compare_functions.cpp -O2
$./a.out
std::function: 518 ms
func::function: 515 ms
virtual function: 547 ms

И пойти отдыхать. А если и учиться, то учиться правильным практикам, а не своей поебистике.
Аноним 16/10/19 Срд 06:21:02 1497712300
Аноним 16/10/19 Срд 06:23:24 1497716301
>>1497712
Я кстати ахуел сколько там часов лекций выложили. Как все это смотреть?
Аноним 16/10/19 Срд 06:30:52 1497719302
image.png (25Кб, 897x289)
897x289
>>1497706
вообще даже не так.. не совсем понимаю наезда. Во-первых я не против STD (там вон даже std::list есть если что)

Просто всё должно использоваться по назначению, а не потому что круто-модно-молодежно.

Мой код написан конкретно под мою задачу - обработка событий от разных систем.
Аноним 16/10/19 Срд 06:37:19 1497722303
>>1497712
если там про std::function_ref - то он разве принят? у меня его в компиляторе нет.

А если самому писать - то как я написал выше - я пока не осилил шаблономагию завезенную С++11/С++14/С++17
Аноним 16/10/19 Срд 06:48:24 1497724304
>>1497719
>Мой код написан конкретно под мою задачу - обработка событий от разных систем.
Твой код написан велосипедостроителем, хуево знающим С++. И вместо изучения С++ (например, как написать свой std::function), он страдает хуйней.
Аноним 16/10/19 Срд 07:00:06 1497725305
image.png (17Кб, 456x197)
456x197
>>1497719
Хз, как по мне пикрил удобней. Уверен что можно еще больше упростить код, ибо я сам не маг.
Аноним 16/10/19 Срд 07:08:00 1497726306
>>1497725
а теперь добавь еще трех слушателей
Аноним 16/10/19 Срд 07:10:37 1497728307
>>1497724
Еще раз, зачем мне писать свой std::function?

короче, давай так - ты знаешь что такое signal and slot? Ладно, даю подсказку, он основан на observer. Даю вторую подсказку - в некоторых реализациях можно использовать внутри std::function.
даю третью подсказку - я не обертку над функциями делаю, а систему обработки событий которая должна обрабатывать неизвестные события.
Аноним 16/10/19 Срд 07:17:14 1497729308
>>1497725
и знаешь в чем еще проблема конкретно твоего пикрила, вот у тебя будет класс Input в котором будет твоя function... А потом ты захочешь добавить FooB2. И? Полезешь изменять Input чтобы написать новый Prototype? это как бы нарушение инкапсуляции, и ведет к лапше.

Аноним 16/10/19 Срд 07:19:22 1497730309
image.png (71Кб, 624x656)
624x656
Аноним 16/10/19 Срд 07:23:25 1497732310
>>1497724
>хуево знающим С++
- а ты возьми и объясни.
Аноним 16/10/19 Срд 07:28:40 1497735311
image.png (8Кб, 381x89)
381x89
Аноним 16/10/19 Срд 07:32:10 1497736312
image.png (55Кб, 781x805)
781x805
>>1497730
ошибка, зачем ты создаешь несколько Signal, если он должен быть ровно один?

Аноним 16/10/19 Срд 07:44:08 1497737313
>>1497735
твои примеры, они просто про обертку над методом. Это вообще не то.

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

- на каждое событие подписываются подписчики (Listener). Количество подписчиков неизвестно. это может быть один, два, стопятсот.

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

std::function не является решением, это всего лишь инструмент через который такую задачу можно решить. Всё равно придется писать обертку потому что:
- подписчики могут уничтожаться в любое время, их срок жизни никак не связан со сроком жизни системы генерирующей события.
- нужно хранить не одну функцию, а массив - то есть должны быть механизмы добавления, удаления и обхода
- а там где-то еще многопоточность бегает - там свои сложности
- всё это еще и не должно выбиваться из общего кодестайла, так что обертка 100% будет
- если плевать на кодестайл, то не стоит плевать на проблемы STD и DLL (кто-нибудь помнит почему в DLL интерфейсах нельзя std::string а надо char*? это из той же оперы). так что всё равно обертка.
Аноним 16/10/19 Срд 07:50:01 1497738314
>>1497710
>>1497724
>>1497735
Короче, хватит на пальцах. Раз вы не хотите знать что такое паттерн singal and slot, то я вам покажу, почему std::function - это ни разу не оно

https://github.com/adrg/sling
(здесь используется ваш std::function)

или вот
https://github.com/NoAvailableAlias/nano-signal-slot
(но здесь велосипед, да)

Я вообще решаю другую задачу, так что... странно меня обвинять в страдании хуйней, если вы даже не поняли задачу которую я решаю.
Аноним 16/10/19 Срд 07:54:46 1497739315
>>1497738
Так ты объяснять не умеешь. Никто и не говорил, что это одно и тоже. Посоветовали использовать std::function, все остальное ты сам надумал, еще и обижаешься на нашу помощь.
Аноним 16/10/19 Срд 08:06:19 1497742316
>>1497739
ну я не вижу решение через std::function, которое было бы проще и эффективней:
- за функцию у меня отвечают две строчки которые на самом деле одна (typedef) - для этого мне не надо тянуть довольно тяжелые заголовки.
По какой причине (кроме религиозной) имеет смысл одну строку кода заменять на тяжелый заголовок?

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

- и всё равно нужно было делать решение для ситуации когда слушатель убивается раньше обработки события.
Аноним 16/10/19 Срд 09:34:09 1497759317
>>1497742
>за функцию у меня отвечают две строчки которые на самом деле одна (typedef) - для этого мне не надо тянуть довольно тяжелые заголовки.
Неправда. У тебя класс должен имплементировать интерфейс EventResizeEventListener, и это является самой большой проблемой кода. Типичное ООП в стиле 90-х: для простой задачи с простой семантикой наворачивается какая-то ебанутая иерархия классов. Алло, я хочу просто подписаться на событие, нахуя мне этот АбстрактПроксиСинглетовЭвентРисайзЭвентЛистенер и 10005000 других классов такого плана.

А на самом деле для механизма коллбэков достаточно std::function, который делает type erasure, и тогда подписываться сможет кто угодно, даже не класс вообще, лишь бы была нужна сигнатура.
Что касается "удаления листенера из списка подписок в деструкторе", то нет листенера (а есть std::function) - нет проблем. Проблема надумана.
Аноним 16/10/19 Срд 11:56:05 1497818318
>>1497759
как ты подпишешься на событие, если у разных событий разные типы и количество аргументов?


даже через std::function нужно эту сигнатуру указывать, или покажи как можно в std::function передать функцию не указывая аргументы

>>Что касается "удаления листенера из списка подписок в деструкторе", то нет листенера (а есть std::function) - нет проблем. Проблема надумана.
Это на абстрактных единорогах,

В реальном проекте листенер - это метод класса, который работает с этим классом. например:
Widget : public EventResizeEventListener;

или ты предлагаешь писать на функциях а данные перекидывать через глобальные переменные? или как?


Аноним 16/10/19 Срд 11:59:47 1497819319
>>1497759
давай по другому
вот тебе список ивентов
keyboardHandler
mouseHandler
touchHandler
gamepadHandler
windowHandler
systemHandler
uiHandler
animationHandler
soundHandler
updateHandler

у каждого из них свое количество аргументов, у одних это две переменные, у других это один класс, а у кого-то может и вообще нет аргументов

Теперь давай без имплементации и 100500 других классов покажи мне решение...

Через ООП конечно же. Ведь те, кто должны реагировать на события - это не под типы, у них своя логика, свои члены, свои методы
Аноним 16/10/19 Срд 12:04:12 1497821320
ооп-ненавистник прокрался в тред.
>>1497759
опять парадигма говно в жопу заливает?
Тебе в этой иерархии не надо ковыряться, а просто переопределить метод.
Аноним 16/10/19 Срд 12:12:59 1497828321
Аноним 16/10/19 Срд 12:51:16 1497851322
Сап, аноны. Мне нужно выполнять код, использующий библиотеки кьюта при обращении к хосту по определенному порту. Как лучше это реализовать - написать программу, которая будет запущена в фоновом режиме и какимто образом слушать этот порт, или есть возможность с помощью оси (шиндоуз) выполнять код на хосте при обращении на порт?
Аноним 16/10/19 Срд 13:03:49 1497861323
>>1497828
Чини детектор, пруфов не будет
Аноним 16/10/19 Срд 13:19:20 1497871324
>>1496993
Если что, у weak_ptr нет оператора разыменования, т.к. перед использованием содержимого его надо обязательно проверить на существование.
Надо делать так:
auto ptr = t.lock();
И если ptr не nullptr, то к нему уже обращаться как к указателю
Аноним 16/10/19 Срд 14:24:03 1497907325
⚾️⚽️☻☻‍⚕️‍
Аноним 16/10/19 Срд 16:15:37 1497986326
>>1497759
ладно, переделал
https://ideone.com/7SS1k6

Теперь все классы-слушатели наследуются всего от одного интерфейса Listener. Этот интерфейс нужен чтобы оно потом в случае уничтожения класса почистило память.

С этим пока не нашел решения (напомню, на события реагируют не функции, а методы классов, так как все данные в классах. И вот эти классы могут уничтожаться раньше чем менеджер событий, поэтому нужно чтобы менеджер выкинул повисшие указатели....
Вообще эту задачу можно решить через умные указатели без наследования, но я так и не понял в каких случаях weak_ptr не дает освободить указатель, да и конструктция в итоге уродливая)

перегружать теперь ничего не надо
Аноним 16/10/19 Срд 17:09:13 1498014327
Сап двощь,
Нужна помощь от посвященных в плюсы
Как сделать, фоновое приложение, которое активируется при зажатии указанной кнопки, с меня как всегда
Аноним 16/10/19 Срд 17:09:24 1498015328
Аноним 16/10/19 Срд 17:26:42 1498030329
>>1497612
Спасибо, а если не секрет, опыт разработки был? есть что-то из кулстори?
Аноним 16/10/19 Срд 17:38:20 1498040330
Аноним 16/10/19 Срд 18:16:42 1498063331
>>1496959
Язык такое неговно, что без нужно юзать санитайзеры.
НЕ ГОВНО СЛЫШИТЕ, НЕ ГОВНО
Аноним 16/10/19 Срд 18:23:32 1498071332
>>1498063
>не может в нормальный код
ЯЗЫК ГОВНО В ЖОПУ ЗАЛИВАЕТ АРРРЯЯЯЯЯ
Аноним 16/10/19 Срд 18:39:45 1498091333
>valgrind
>AddressSanitizer/ThreadSanitizer/MemorySanitizer
>PVS-Studio, cppcheck, cpplint, coverity
>Из Rust в данный пиздят фичу lifetime analysis
>Все большие компании юзают статический анализ и санитайзеры
ВЫ ВСЕ ПРОСТО НЕ МОЖЕТЕ В НОРМАЛЬНЫЙ КОД А Я МОГУ

Сектант, плиз
Аноним 16/10/19 Срд 18:42:42 1498092334
Аноны, хочу попробовать перекатиться в дс2 работать. Чё там у зарплат крестовиков-синьоров, в своей дыре получаю 90к, на какую сумму вообще претендовать, уровень жизни и за разный.
Аноним 16/10/19 Срд 19:05:35 1498104335
>>1498040
А как это работает? Я думал там все эти блюпринты компилятор превращает в те же самые бинари, как если бы ты на плюсах писал и это просто фронт-енд для них.

Мимо другой
Аноним 16/10/19 Срд 19:15:41 1498113336
>>1497907
блядь абу ебаный уебок какова хуя ебучие футбольные эмоджи работают но не нормальные
Аноним 16/10/19 Срд 19:23:20 1498115337
>>1498104
но не гарантирует, что сгенерированный из блюпринтов код будет таким же, как если бы ты реализовал ту же функциональность, написав всё руками. хотя и руками ты можешь написать еботу, которая работает хуже блупринта.
Аноним 16/10/19 Срд 21:08:49 1498196338

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

Аноним 16/10/19 Срд 21:18:43 1498207339
>>1498196
Очевидно изобретает кют.
Аноним 16/10/19 Срд 21:26:30 1498212340
>>1497986
Я вот смотрю и нихуя не понимаю, в чем смысл? При как обстоятельствах у меня будет несколько разных классов с одинаковыми методами и почему я им должен слать сигнал? Я лучше вектор из каллбеков запилю.
Аноним 16/10/19 Срд 22:02:13 1498226341
>>1498040
>Blueprint ничем не отличается от крестов
Где я это сказал?
Аноним 16/10/19 Срд 22:10:25 1498229342
>>1498030
>опыт разработки был? есть что-то из кулстори?
Периодически приходится делать простые демки в VR. Народ такое любит заказывать: походить по помещению, потыкать в интерактивные подсказки, посмотреть анимации простенькие. Анрил для этого очень удобен - все быстро накидывается мышкой, а в ВР хорошо чувствуется масштаб, особенно у всяких гигантских йоб вроде танкеров и ракет. Кулстори нет особенных.
Аноним 16/10/19 Срд 22:21:50 1498234343
>>1492694
Гораздо интереснее на какой сажают.
Аноним 16/10/19 Срд 22:46:36 1498250344
Аноним 17/10/19 Чтв 02:39:39 1498336345
>>1498212
ты не понимаешь сам паттерн signal and slot?

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

И все эти кнопки должны реагировать на события... Конечно это все может делать и виджет мастер, но в таком случае нарушаются принципы ООП - в таком случае мастеру придется знать о своих элементах слишком много... А что если нужно добавлять новые элементы со своей логикой? Этот путь - это путь антипаттернов - гудобжекта и спагеттикода.
(впрочем так тоже делают - нет же единого решения задачи)
Аноним 17/10/19 Чтв 03:36:06 1498341346
>>1498336
Нет такого паттерна, это абстракция придуманная QT дебилами.
Аноним 17/10/19 Чтв 04:44:02 1498349347
>>1498336
>ты не понимаешь сам паттерн signal and slot?
Я изучил вопрос и все, что нарыл, это то, что сигналы-слоты удобны тем, что позволяют пробрасывать ООП-сообщения между тредами. Если у тебя однотредная реализация, она ничем не лучше вектора коллбэков по функциональности. Можно написать пару шаблонных функций уровня "добавить коллбэк в вектор колбэков" и "пройтись по вектору коллбэков и вызвать каждого колобка", но не более того.
А вообще эта хуйня появилась когда в крестах не было лямбд.
Аноним 17/10/19 Чтв 04:54:30 1498354348
>>1498341
observer/listener? это все из одной области.

И кстати, QT тут ни при чем. Просто в QT этот паттерн юзают, но не изобрели

сигналы в бусте пришли (хм, в 2001 году чтоли?)
https://www.boost.org/doc/libs/1_63_0/doc/html/signals.html

И вроде как их изобрели чтобы в С++ завести событийно-ориентированное программирование о котором вроде уже и забыли
Аноним 17/10/19 Чтв 04:58:06 1498356349
>>1498341
и кстати в .NET это близко делегатам
Аноним 17/10/19 Чтв 05:00:21 1498358350
Screenshot2019-[...].png (10Кб, 722x521)
722x521
>>1498354
Эх, зумерки, для которых 2001 год - это ниибаца древность.
В 2001 году я в kdevelop изучал Qt, который к тому времени был уже довольно старым. Вот тебе пруф наличия там сигналов и слотов аж в 1998 году. Раньше не могу - https://download.qt.io/archive/qt/1/ на этой странице нихуя раньше нет.
Аноним 17/10/19 Чтв 05:03:30 1498361351
>>1498349
ну ты не про то. при чем тут лямбды? Во-первых, мы пишем в ООП, то есть никаких глобальных функций.

Есть классы, у классов есть методы для того чтобы работать с членами класса (инкапсуляция, все дела)
Соответсвено какой-нибудь метод может быть реакцией на событие - например игрок нажал кнопку, значит надо вызвать метод Player::Move.


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

Одна из задач сигналов и слотов - уметь отключать мертвые классы.
Аноним 17/10/19 Чтв 05:06:51 1498362352
>>1498358
да какая разница?

просто он лучше всего подходит для либ с гуи, где много событий, но неизвестно сколько объектов
Аноним 17/10/19 Чтв 05:25:36 1498364353
поделитесь шаблонорешением

вот есть интерфейс IClass.
От него наследован класс MyClass

А еще есть шаблонный метод <typename T> Foo(T t)

так вот. надо в Foo сделать проверку что T наследован от IClass,

Как?
Аноним 17/10/19 Чтв 05:58:03 1498365354
Аноним 17/10/19 Чтв 06:35:31 1498369355
>>1498365
а в compile-time можно? чтобы не компилировалось
Аноним 17/10/19 Чтв 06:55:06 1498370356
>>1498369
А зачем там вообще шаблон, можно же просто
foo(IClass& t)
Аноним 17/10/19 Чтв 06:57:53 1498371357
Аноним 17/10/19 Чтв 09:04:15 1498415358
>>1498369
static_assert(std::is_base_of_v<...>)
Аноним 17/10/19 Чтв 10:38:59 1498491359
Аноним 17/10/19 Чтв 12:03:00 1498537360
>>1498491
И что же такого прикольного здесь?
Аноним 17/10/19 Чтв 12:53:58 1498556361
>>1498537
На самом деле ничего, это я слепой даун.
Прости, друг, я невнимательно прочёл сообщение анона, на которое ты ответил - почему-то показалось, что ему нужен рантайм-еррор, а не компайлтайм.
Аноним 17/10/19 Чтв 14:29:33 1498600362
A a;
B b;
a+ b; - ошибка, хотя в A определено преобразование в B
operator B() {
return B(x,y);
}
Аноним 17/10/19 Чтв 14:55:37 1498624363
>>1498600
А оператор сложения B определён?
Аноним 17/10/19 Чтв 15:30:31 1498644364
>>1498624
Да. b + b норм работает. a + 3 тоже, так как определил преобразование в int
Аноним 17/10/19 Чтв 15:41:36 1498649365
>>1498644
Хотя если поменять местами слагаемые то всё работает. Странно
Аноним 17/10/19 Чтв 15:48:08 1498658366
Аноним 17/10/19 Чтв 15:51:01 1498659367
>>1498649
Значит ты определил сложение только в одном классе.
Аноним 17/10/19 Чтв 15:53:21 1498662368
>>1492444
У вас нет потому что public private protected ахахах
Аноним 17/10/19 Чтв 15:55:43 1498664369
>>1498659
Определил в обеих, не помогло.
Аноним 17/10/19 Чтв 15:55:46 1498665370
>>1498658
Класс A не знает, как ему складываться с B. Либо определи сложение в обоих классах, либо вне классов.
Аноним 17/10/19 Чтв 15:59:35 1498669371
>>1498658
У тебя для A не перегружен operator+(B). Либо перегружай, либо делай как здоровый человек operator+(A, B) и operator+(B,A) и не ебись с implicit conversion
Аноним 17/10/19 Чтв 16:01:15 1498674372
>>1498665
Не понял тебя. Зачем ему это знать, если я определил для класса A преобразование в B? Да и даже если я в А вставлю это
A& operator+(A& d){
x+=d.x;
y+=d.y;
return *this;
}
Ничего не поменяется
Аноним 17/10/19 Чтв 16:03:40 1498677373
В прочем я понял, результат преобразования rvalue, из за этого все проблемы.
Аноним 17/10/19 Чтв 16:13:19 1498686374
Я не сишник, но у нас препод очень не советует делать
using namespace std;
Почему? Чем лучше постоянно писать std::(нейм) ?
Спрашиваю просто из интереса, я лабы все равно на другом яп пишу.
Аноним 17/10/19 Чтв 16:13:19 1498687375
>>1498674
>Зачем ему это знать, если я определил для класса A преобразование в B?
А откуда ему знать, что ему надо преобразоваться в B?

И кстати, не надо возвращать у сложение B&, ты же не собираешься писать что-то вроде
b + a = 3
Аноним 17/10/19 Чтв 16:19:46 1498698376
>>1498686
Захламляет твоё пространство имён. Чтобы не возникало двусмысленности, если у тебя в коде будут функции с теми же именами.
Аноним 17/10/19 Чтв 16:24:29 1498703377
>>1498687
Так будет же лишнее копирование.
Аноним 17/10/19 Чтв 16:33:14 1498709378
>>1498703
Вообще, я даже не обратил внимания, что у тебя за странный способ сложения? a + b и так должно создавать новый объект, который ты будешь использовать в выражении, типа a = a + b. А у тебя оно с какой-то стати объект изменяет. Тебе надо было перегрузить оператор += для этого.

Вот так должно быть https://ideone.com/JRcjjp
Аноним 17/10/19 Чтв 17:47:40 1498747379
>>1498686
Потому что у вас лабы, и кроме лаб препод ничего не делал. В большом проекте using будет, но будет сидеть только там, где он действительно нужен - внутри класса, функции или вообще блока кода, и не лезть наружу. Это касается не только std, а любых псевдонимов классов и неймспейсов.
Аноним 17/10/19 Чтв 17:51:08 1498750380
>>1498747
этот прав

Печать аппрувала сениора из нвидии
Аноним 17/10/19 Чтв 18:43:30 1498773381
>>1498750
Как же ты заебал вниманиеблядствовать
Аноним 17/10/19 Чтв 19:22:16 1498789382
>>1498773
Чем я хуже кошкомальчика?
Аноним 17/10/19 Чтв 19:42:02 1498797383
>>1498747
Ты так говоришь, будто во всех проектах чуть-чуть больше лабы возникает проблема двусмысленности имен.
Даже в очень большом проекте двусмысленности может не возникнуть. А может возникнуть, хуй его знает, проблема как раз в том, что пиздец подкрадывается как всегда незаметно, и ты бежишь с горящей сракой менять все pizda на std::pizda.
Аноним 17/10/19 Чтв 20:01:20 1498802384
15700155417070.png (181Кб, 535x466)
535x466
Как убрать окно из отрисовки? Есть приложение, которое берет пиксели с хендела рабочего стола, то есть само приложение тоже в нём отображается, хочу убрать его с отрисовки, будто его и нет.
Аноним 17/10/19 Чтв 20:06:13 1498805385
PtlPT9OGWw.jpg (68Кб, 662x663)
662x663
>>1498361
>никаких глобальных функций
БЕРЁШ ГЛОБАЛЬНУЮ ФУНКЦИЮ
@
ЗАВОРАЧИВАЕШ В НЕЙМСПЕЙС
@
ГОТОВО, ТЕПЕРЬ НАША ПРОГРАММА НАПИСАНА В СТИЛЕ ООП

Аноним 17/10/19 Чтв 20:36:24 1498829386
>>1498356
Как раз делегат ближе к std::function.
Аноним 17/10/19 Чтв 20:38:33 1498835387
>>1498361
> Во-первых, мы пишем в ООП, то есть никаких глобальных функций
Ебать дебил. Посмотри последний цппкон. Там популярно объясняют, что глобальные функции нужны, и напоминают, что С++ не тоталитарная ООП помойка.
Аноним 18/10/19 Птн 00:45:30 1499008388
Аноним 18/10/19 Птн 00:54:59 1499014389
>>1498747
>В большом проекте using будет внутри класса
Using namespace внутри класса нельзя же.
Аноним 18/10/19 Птн 00:57:39 1499015390
>>1498797
> А может возникнуть, хуй его знает
Поэтому лучше не использовать using namespace в хидерах. Так оно протечет по всему проекту. Если использовать только в cpp, то будет гораздо проще исправить столкновение имен только в одном файле.
Аноним 18/10/19 Птн 01:07:15 1499017391
>>1498835
угу, страуструп всегда писал что не надо перегружать интерфейс класса, а вместо этого, по возможности, делать свободные функции-помощьники рядом с классом, объединяя это все в одну сущньность посредством пространств имен

Аноним 18/10/19 Птн 03:05:36 1499033392
198584896548733[...].png (237Кб, 699x462)
699x462
>>1499008
Я не хочу скрывать само окно, оно показывает мой рабочий стол, я хочу чтобы оно не показывалось. Прикреплю скрин, чтобы было понятнее, хочу чтобы окно вовсе не показывало себя. Могу сделать чёрный фон SetWindowDisplayAffinity(hWnd, WDA_MONITOR), но это не то, чего я хочу.
Аноним 18/10/19 Птн 03:16:21 1499036393
>>1499033
Ну передай своему окну hide перед скриншотом и разверни позже, раз уж не получается никак.
Но вообще 3 минуты гугла подсказали, что bitblt может тебе помочь.
Аноним 18/10/19 Птн 03:20:29 1499037394
>>1499036
Оно делает не 1 скриншот, а непрерывную серию (видео) в реальном времени.
Аноним 18/10/19 Птн 05:57:21 1499063395
есть лямбда функция
auto a = [](int g){return g*g;}
как поместить ее в контейнер map, который хранит пары строка - std::function<int>?
Аноним 18/10/19 Птн 09:51:25 1499120396
Screenshot2019-[...].png (345Кб, 1080x2248)
1080x2248
Screenshot2019-[...].png (222Кб, 1080x2248)
1080x2248
Анон, я давно (12лет) погромирую бекэнд на C#/F#/JS/TS/Python, хочу вкатиться в плюсы (задачи - хоббийный ардуино-ARM/ESP-ембеддед, интероп/FFI с языками выше для работы, в дальнейшем - сетевые числодробилки в сфере трейдинга, тоже для работы).

Читать книги для нюфань скучно, справочники лениво. Что из списка в шапке подойдет для быстрого вката в современный, 14/17 стандарта, язык? Там в основном книги 200x годов, а стандарт 2011 вроде внес серьезные изменения. Взялся читать Мейерса "Эффективный и современный C++" 2015, но понял что не хватает БАЗИСА.

Нашел на scanlibs пикрил 2019 года, описываются фичи в т.ч. 17 стандарта. Как думаешь, подойдет в качестве экспресс-курса, если дополнить практикой с leetcode/codewars/etc?
Аноним 18/10/19 Птн 10:40:30 1499147397
>>1499120
>Там в основном книги 200x годов, а стандарт 2011 вроде внес серьезные изменения
Да не особо они серьезные. Основные принципы не поменялись, просто стало чуть проще их применять. Читай библиографию Мейерса целиком. Если же прямо совсем лень, читай

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md
Аноним 18/10/19 Птн 10:50:02 1499150398
>>1499147
> Да не особо они серьезные.
Да нет, как раз таки очень серьезные.
Аноним 18/10/19 Птн 11:09:38 1499158399
>>1499150
Только для тех, кто был в анабиозе в 2003 года.
Половина фич это перетащенный в стандартную либу буст, вторая половина - синтаксический сахарок.
Разве что лямбды реально повлияли на стиль, но это тоже сахар.
Аноним 18/10/19 Птн 11:14:40 1499160400
>>1499158
Только вот в учебниках никакого буста нет. В итоге прочтет книгу по старому стандарту, откроет код, а там лямбды, перемещение, вывод типов, умные указатели и тд
Аноним 18/10/19 Птн 11:15:30 1499161401
>>1498797
>менять все pizda на std::pizda
Ебанатство какое-то. Почему нельзя новые pizda использовать как neo::pizda?
Это получается стандартную библиотеку нельзя по-человечески юзать, а всяким левым хуйням можно, лол.
Аноним 18/10/19 Птн 11:18:24 1499163402
>>1499160
Он переживает не о том, что там чего-то нет, а то, что там что-то неверное что потребуется потом забыть. А это не так.
А то что ты упомянул есть в том Мейерсе про который он писал и посчитал что базы не хватает.
Аноним 18/10/19 Птн 11:19:23 1499164403
>>1498686
В cpp файле делай что хочешь. А вот делать так в хедере это блядство, потому что ты поломаешь код, который тебя заинклудил.
Аноним 18/10/19 Птн 11:26:04 1499168404
Что можно почитать/посмотреть о Qt с нуля, т.е. чтобы с самых основ все идеи заложенные в него пояснялись на примерах? Просто до этого на нем писал как еблан - брал гуй, а логику писал чуть ли не на простых плюсах, какая-то хуйня получается, по сути путь в никуда. Можно даже на английском, если какая-то годнота.
Аноним 18/10/19 Птн 11:41:29 1499177405
>>1499168
Макса Шлее наверни
Аноним 18/10/19 Птн 12:18:14 1499219406
Аноним 18/10/19 Птн 12:18:46 1499220407
>>1499161
Можно и так, но потом кто-нибудь въебет using namespace neo; и все пойдет по пизде. А вообще >>1499015 прав, using namespace std; в сурсах вполне ок решение.
>>1499168
Меня забавляют байтоебы, на каждом углу кричащие, что они настоящие программисты, а не какие то веб макаки, а потом идут писать десктоп, который не сильно далеко от уеба ушел по сложности задач.
Ничего не имею против тебя, плюсов или кьюти, я и сам в какой то мере байтоеб, просто вспомнил забавное наблюдение.
Аноним 18/10/19 Птн 12:45:37 1499229408
>>1499220
все таки QT десктоп, это кардинально иной уровень сложности, чем вебговно, как не крути. Но тем не менее, если бы я писал гуй - я бы его точно писать не крестах.
Аноним 18/10/19 Птн 12:52:02 1499233409
>>1499229
>это кардинально иной уровень сложности, чем вебговно, как не крути.
Где там сложность? Раскидал по форме элементы, написал обработчики событий -- все нахуй.
Разве что только если гуй -- это всего лишь фронтэнд к какой-то пиздец сложной логике вроде какого-нибудь компилятора или виртуальной машины, но пиздец сложную логику и в вебе можно придумать. У вас похоже представления о вебе прямиком из 90-х, когда пых использовали для счетчика посетителей на хоумпейдж.
Аноним 18/10/19 Птн 13:40:16 1499272410
>>1499233
> если гуй -- это всего лишь фронтэнд к какой-то пиздец сложной логике
Приведи пример где это не так? У меня вообще большинство десктоп приложений это обёртка над терминалом, чтобы кнопочки тыкать можно было. А веб говно потому-что там макаки вообще хуй положили на оптимизации и теперь какие-то одностраничные лендинги весят по 50мб и кушают по 1гб памяти, в десктопе на крестах по крайней мере я такой хуйни не замечал.
Аноним 18/10/19 Птн 14:10:35 1499302411
>>1499177
Прям годнота? Я в 16 году начинал читать актуальное на тот момент издание, но по какой-то причине дропнул. Ок, попробую, спасибо.
Аноним 18/10/19 Птн 14:36:16 1499321412
>>1499219
Неужели чтобы такое реализовать на ассемблере потребовалось бы такое огромное количество строк кода?
Аноним 18/10/19 Птн 14:41:15 1499327413
>>1499321
ну мапа то - дохуя сложный контейнер
Аноним 18/10/19 Птн 14:46:04 1499335414
>>1499302
Шлее о многих аспектах не рассказывает, или говорит вскользь. В целом для ознакомления заебись, считай прочитаешь ее за неделю, поделаешь примеры из нее, а дальше нужно будет садиться и писать что-то самому. У кьюта огромный плюс - охуенная документация, доступная прямо из иде, с примерами и описанием каждой функции. Как почувствуешь готовность - можешь почитать как там мок устроен, нахуя ты эти странные макросы вставляешь куда попало и почему функциям-сигналам не нужна реализация. Хотя да, кьют часто ругают и не зря, хотя и в вакансиях я его вижу относительно часто. Лично мне как студентоте было заебись написать что-то полезное, а не дрочить байты и лабы в С с классами.
Аноним 18/10/19 Птн 14:56:31 1499341415
>>1499335
> У кьюта огромный плюс - охуенная документация,
Хочу рассказать, что я делал два примера по "документации" и они нихуя не работали, поскольку в самом доке пропускали части кода, приходилось еще и сорсы примера открывать. Неудобно.
Но ты не про примеры говоришь. А сама документация как референс да, неплохая.
Аноним 18/10/19 Птн 14:58:16 1499342416
>>1499341
Ну не знаю, я код модели для тривьюхи практически полностью себе в проект впихал, и работало заебись, разве что немного модифицировал под свою задачу. Не помню такого, что код прямо не работал, разве что действительно там где-то пропускают часть кода для упрощения.
Аноним 18/10/19 Птн 15:42:40 1499357417
>>1499229
QT - хуйня для вебмакак, нормальные люди пишут на winapi
Аноним 18/10/19 Птн 16:10:35 1499373418
>>1499357
>нормальные люди пишут на winapi
да ладно
если сейчас хочешь писать для развлечения (а натив под винду для заработка уже не попишешь, нет работы), то гораздо интересней писать uwp приложение
winrt - замечательно спроектированная нативная библиотека
Аноним 18/10/19 Птн 16:12:55 1499374419
>>1499373
>(а натив под винду для заработка уже не попишешь, нет работы)
геймдев
Аноним 18/10/19 Птн 16:17:42 1499380420
>>1499357
на винапи уже никто давно не пишет полноценные оконные приложения.
Аноним 18/10/19 Птн 16:18:35 1499382421
>>1499168
отделяй гуй от реализации всегда
просто представь, что у твоей проги будет 2 интерфейса - командной строки и гуй
те пишешь сначала ядро, из него будет торчать открытый api интерфейс
Аноним 18/10/19 Птн 16:22:52 1499389422
>>1499160
>а там лямбды,
лямбы вообще синтаксический сахарок, для того чтобы не писать свободные функции или функторы в случае когда они будут применяться на один раз..

Аноним 18/10/19 Птн 16:24:06 1499391423
kjk в чем смысл?
Аноним 18/10/19 Птн 16:25:48 1499392424
>>1499160
> вывод типов
вывод типов вообще то в языке уже очень давно, как только появились шаблоны
вывод типов работал для шаблонов свободных функций и для функций-членов классов
соответственно и правила вывода типов уже тогда были и были хоть и сложными, но интуитивно понятными
и в новых стандартах эти правила во многом применимы и на вывод типа выражения (auto, deltype и прочее), те ничего особенно нового..
Аноним 18/10/19 Птн 16:32:53 1499399425
>>1499160
>умные указатели
в стандарте 98 года уже был один умный указатель, а вообще на конец 90 уже были написаны книги, половина объема которых была посвящена теме умных указателей, например книга джеффа элджера "библиотека программиста с++" (неудачное название у книги, у александреску "современное проектирование на с++" тоже не очень удачное название было)
потом была уже методика raii, которая закрывала часть задач умных указателей
Аноним 18/10/19 Птн 16:35:47 1499404426
>>1499160
и вообще, если крупно обобщить, то важнейшее семантическое изменение в языке - это появление механизма перемещения
в будущем (если язык не умрет) это сильно изменит подход к проектированию многих библиотек
Аноним 18/10/19 Птн 16:38:04 1499406427
>>1499147
а я вот из тех, кто как раз прочитал все книги майерса (просто для развлечения)
и вот самой полезной и удачной у него считаю последнюю книгу, где он обсуждает тонкости стандартов с++11 и с++14
а предыдущие книги - это, блин, такая простота на данный момент что просто даже не знаю
Аноним 18/10/19 Птн 16:41:06 1499409428
>>1499120
я бы тебе вообще не советовал изучать кресты, пиши (и зарабатывай) на том что ты знаешь
а для интереса продолжай грызть f#, он прикольный, языки ml-семейства вообще прекрасно подходят для развлечения

Аноним 18/10/19 Птн 16:42:33 1499410429
>>1499063
не очень понятно зачем тебе для этого лямбды
достаточно именованой функции, и указателя на нее помещенного в мапу

Аноним 18/10/19 Птн 18:09:07 1499464430
>>1499409
F# для развлечения я уже знаю, на работе втащить его в прод довольно сложно: в финансах все довольно консервативненько, еще и спецов на рынке мало. Я много дотнетчиков прособеседовал (ок 50 за последний год), у нескольких в резюме был F#, и знаний у всех меньше, чем у меня. Да что там говорить, даже питониста толкового х найдешь, те что меньше 200 просят нихрена не знают, а остальные как будто в ai/ml или гошку укатились

Плюсы они уже вот тут, куча либ и сервисов на работе, и несколько отладочных плат дома.

А деньги мне больше не от языков программирования приходят, а от болтовни, сроков и результатов моей команды и порядка в джире. Тимлид же лул.
Аноним 18/10/19 Птн 18:21:58 1499469431
У меня 2 проблемы. Во первых почему gcount у меня всегда равен нулю(читаю строки гетлайном из файла), а во вторых почему tellg не работает? Выдает рандомные числа не совсем рандомные на самом деле, они рандомно отличаются в пределах 10 от того что считает str.size()+2
Аноним 18/10/19 Птн 18:30:17 1499473432
>>1499464
не забивай себе башку еще и крестами
щас только книга по стандартной библиотеке - 1200 страниц, книга по шаблонам - 850 страниц, а там ничего особенного не написано, чисто вводные книги в тему
сам 17й стандарт - 1650 страниц, лол
нафиг тебе это надо

Аноним 18/10/19 Птн 20:04:19 1499521433
Аноним 18/10/19 Птн 20:10:04 1499527434
>>1498092
Жидбрейнс платит 200+
Аноним 18/10/19 Птн 20:15:58 1499530435
Аноним 18/10/19 Птн 20:54:36 1499550436
15358269748900.png (248Кб, 591x442)
591x442
Приветствую. Кто-нибудь знает, почему assert(char(170) == int(170)) падает? ЯННП.
Аноним 18/10/19 Птн 21:06:48 1499560437
>>1499550
Потому что char обычно знаковый -128:+127.
Аноним 18/10/19 Птн 21:07:20 1499561438
>>1499550
Аналогично char(0b10101010) != 0b10101010
Аноним 18/10/19 Птн 21:10:29 1499566439
>>1499560
Ты мудр, спасибо, чувак
Аноним 18/10/19 Птн 21:54:10 1499602440
Не нашел как мне усыпить программу на (60/(45*4)) секунд, работаю под линукс, нашел только sleep() но эта функция принимает только секунды, подскажите как сделать задержку.
Аноним 18/10/19 Птн 21:56:25 1499605441
>>1499399
>в стандарте 98 года уже был один умный указатель
Это был плохой указатель и он ушел от нас.

>>1499602
using namespace std::chrono_literals;
std::this_thread::sleep_for(20ms);
Аноним 18/10/19 Птн 21:57:59 1499609442
>>1499602
usleep
ты гуглить не умеешь?
Аноним 18/10/19 Птн 22:03:01 1499616443
>>1499063
Просто, без задней мысли.
Аноним 18/10/19 Птн 22:03:23 1499618444
>>1499605
чтото у меня ошибок навалило
error: 'chrono_literals' is not a namespace-name

error: expected namespace-name before ';' token
using namespace std::chrono_literals;

error: 'std::this_thread' has not been declared

error: unable to find numeric literal operator 'operator""ms'

Аноним 18/10/19 Птн 22:09:10 1499624445
>>1499609
Он не работает, я пробовал.
Аноним 18/10/19 Птн 22:10:11 1499625446
Аноним 18/10/19 Птн 22:11:43 1499627447
>>1499602
usleep принимает микро или наносекунды, не помню
Аноним 18/10/19 Птн 23:33:08 1499672448
>>1499605
>Это был плохой указатель и он ушел от нас.
хех ты даже щас и не вспомнищ чем он был плох
он справлялся со своими задачами и все

Аноним 18/10/19 Птн 23:48:36 1499682449
>>1499625
Мб он компилит ещё не под std=c++17
Аноним 19/10/19 Суб 01:18:35 1499720450
>>1499672
Ну не то чтоб плох, но до введения семантики перемещения разрушающее присваивание выглядело пиздец как странно.
Аноним 19/10/19 Суб 20:58:31 1500217451
>>1492523
>геттеры и сеттеры
>как нормальное ооп
Это же ублюдство пиздец,
В простой хуйне типа точки или вектора проще ебнуть структуру, а в каком-нибудь YobaCalculator вся логика должна быть заключена внутри объекта, чтобы тупо загнать через конструктор сеттинги какие-нибудь и дёргать его, как абстрактный черный ящик.
Аноним 19/10/19 Суб 20:59:34 1500219452
Аноним 20/10/19 Вск 07:15:39 1500433453
Задал вопрос в треде для ньюфаней, но продублирую и здесь.

Ребят, если интересна робототехника, а точнее программирование дронов и небольших роботов, ну и сюда же разработка их беспилотного режима, это какие языки? Питон и С++?
Аноним 20/10/19 Вск 07:27:53 1500434454
Аноним 20/10/19 Вск 07:28:38 1500435455
>>1500434
рую ссылку, то тебе нужно открыть вторую ссылку и посмотреть на адрес бар, а затем зайти в первую ссылку и совершить поиск полученной на предыдущем шаге информации.
Аноним 20/10/19 Вск 09:21:08 1500459456
>>1500433
>очнее
У нас в вузе такое чисто на питоне делали, мб там либы какие-то плюсовые есть уже, хуй знает.
Аноним 20/10/19 Вск 09:59:19 1500463457
Аноним 20/10/19 Вск 13:50:35 1500576458
>>1494246
http://www.cplusplus.com/reference/sstream/stringstream/
Можно извратиться используя стрингстримы. Это тоже самое как вывести переменную в стандартный выход, но ето типа стека. Т.е. загоняешь переменную в стринстрим, она им хавается и переваривается в строку, а потом высираешь это на экран.
Этой хуйнёй можно даже типы перегонять в друг друга через стринги. По ёбнутому конечно, но работаети.
Аноним 20/10/19 Вск 14:38:17 1500616459
>>1500459
"сделать что-то на питоне" это означает написать кучу скриптов, вызывающих для работы сишный и крестовой код

Аноним 20/10/19 Вск 16:01:04 1500692460
>>1500433 во первых тебе надо знать целевую архитектуру, например это АРМ, другим там пока не пахнет. Даташиты на камни. Электротехника. Энкодеры ололо, шины и прочая низкоуровневая хрень с байтоеблей.
Язык Си. Можно использовать С++ как Си с классами, просто для удобства. Но про STL забудь, у ембед систем памяти с гулькин хуй.
Если ты ещё не понял, самого кодирования в робототехнике не так много, как кажется, гораздо больше тебе понадобиться смежных знаний.
Аноним 20/10/19 Вск 17:19:04 1500809461
Как получать нажатия даже если мое окно свернуто? Хочу делать скриншот при нажатии принтскрина, то оно работает, только если мое окно активно. Есть методы получше глобал хука?
Аноним 20/10/19 Вск 19:18:25 1500907462
>>1500692
> Но про STL забудь,
Есть же etlcpp и прочие
> у ембед систем памяти с гулькин хуй.
64-128кб уже достаточно доступные, чтоб об этом не переживать так сильно
Аноним 20/10/19 Вск 20:39:08 1500961463
>>1500907
Если памяти чуть побольше - сразу вешаем на камень RTOS, чтобы не писать велосипеды.
Аноним 20/10/19 Вск 20:47:28 1500969464
>>1500616
>то на питоне" это означает написать кучу скриптов, вызывающих для работы сишный и крестовой код
>
Какой язык такие и программы
Аноним 20/10/19 Вск 21:16:58 1501004465
Аноним 20/10/19 Вск 21:26:44 1501011466
Как отформатировать код в VS?
Аноним 20/10/19 Вск 21:32:38 1501017467
>>1501011
Пиздец. Программирование - это не твоё.
Аноним 20/10/19 Вск 21:43:18 1501018468

>>1501017
А по делу есть что сказать?
Аноним 20/10/19 Вск 21:46:04 1501020469
>>1501018
Ты настолько туп, что в гугл не умеешь?
Аноним 20/10/19 Вск 23:22:31 1501076470
>>1501004
Так я на Winapi пишу, нахуй мне QT
Аноним 20/10/19 Вск 23:52:21 1501103471
Аноним 21/10/19 Пнд 00:28:05 1501121472
>>1501020
Ctrl d и ctrl k не срабатывают.
Аноним 21/10/19 Пнд 00:30:30 1501122473
>>1501076
извини, у меня было ощущение, что ты сам не знаешь, на чем пишешь, поскольку ты даже не написал на чем. а че винапи не гуглится?
Аноним 21/10/19 Пнд 01:31:25 1501163474
>>1501122
Гуглил, там говорят кидать глобальный хук, я не хочу, потому что тогда приложение всегда будет требовать права администратора.
Аноним 21/10/19 Пнд 07:22:24 1501242475
>>1501163
Глянь как autohotkey и ditto сделаны.
Аноним 21/10/19 Пнд 07:46:29 1501246476
Сап, аноны. В своей программе я работаю с "трехмерными" текстурами, некоторыми большими байтовыми массивами, внутри представленные как нересайзещейся вектор. И вот не вывозит по скорости код, создание такой и текстуры занимает много времени, ее обработка тоже. Есть какие-нибудь либы по обработке этого говна?
Аноним 21/10/19 Пнд 08:34:18 1501266477
Аноним 21/10/19 Пнд 10:18:55 1501310478
>>1501246
>внутри представленные как нересайзещейся вектор.
Почему не хотя бы std::array тогда?
Или вообще бустовский мультиаррай, там наверняка есть прокси классы для ускорения вычислений над многомерными массивами.
Аноним 21/10/19 Пнд 15:49:19 1501598479
>>1501246
>создание такой и текстуры занимает много времени
ну дык поделай оптимизации, типа банального reserve, операции перемещения типа emplace_back вместо push_back и прочее
>ее обработка тоже
какие операции то нужны? че делаешь то? прямой перебор, доступ по интексу у вектора оче быстрые, быстрее не сделать

в любом случае без каких то подробностей и кода сложно что-то посоветовать

но совершенно точно, нужно сначала попытаться соптимизировать собственный код, работающий с stl, чем сразу бросаться искать альтернативные решения на стороне
Аноним 21/10/19 Пнд 16:08:35 1501603480
In function `audiere::OpenDevice(char const, char const)':
main.cpp:(.text._ZN7audiere10OpenDeviceEPKcS1_[_ZN7audiere10OpenDeviceEPKcS1_]+0xe): u ndefined reference to `AdrOpenDevice'


Что значит данная ошибка?
Аноним 21/10/19 Пнд 16:16:54 1501606481
>>1501598
Что-то мне подсказывает, ему для начала нужно с дебага на релиз переключиться
>>1501603
Библиотеку нужно прилинковать
Аноним 21/10/19 Пнд 16:20:13 1501611482
Я правильно понимаю, что все эти virtual, override, final сделаны сугубо для удобства читающего код?
Аноним 21/10/19 Пнд 16:21:44 1501612483
>>1501611
Если сделаешь override для не виртуального метода, то компилятор будет ругаться.
Аноним 21/10/19 Пнд 16:41:21 1501630484
>>1501611
override и final – для безопасности (типа как const, просто чтобы компилятор ошибку выдал если пытаешься сделать что-то не то). Ну а без virtual виртуальной функции не получится.
Аноним 21/10/19 Пнд 17:07:59 1501648485
>>1501606
g++ main.cpp -L /usr/local/lib/libaudiere.a
Вроде бы подключение библиотеки проходит так, но у меня все ровно вылетает ошибка
Аноним 21/10/19 Пнд 17:19:29 1501661486
>>1501611
хм, нет
virtual и final влияют на семантику
override - да, сделано для удобства чтения
Аноним 21/10/19 Пнд 17:21:00 1501662487
>>1501606
да, да
stl традиционно очень медленный на дебаге, скорость в некоторых местах может проседать на порядок
но возможно, в новых компиляторах это и не так
но раньше было точно

Аноним 21/10/19 Пнд 17:55:46 1501680488
>>1501648
Флаг -L задаёт путь к библиотекам, чтобы потом линковать их с помощью -l[название библиотеки без префикса lib и расширения .a]. Либо убери -L и оставь полный путь, либо напиши -L /usr/local/lib -laudiere
Аноним 21/10/19 Пнд 18:25:23 1501701489
>>1501680
/usr/local/lib у него все равно будет в путях
Алсо стоит заметить, что порядок важен и
g++ main.cpp -laudiere #работать будет
g++ -laudiere main.cpp #работать не будет
Аноним 21/10/19 Пнд 18:27:11 1501704490
>>1501598
Не нужно. STL никогда не подразумевала хорошую имплементацию 3д массивов, а vector<vector<vector<>>> это вообще худшее что может быть. Даже васяновелосипед на основе vector<> и маппинга из 3д в 1д будет сильно лучше работать
Аноним 21/10/19 Пнд 19:01:16 1501724491
>>1501662
-DITERATOR_DEBUG_LEVEL=0
И никаких проблем.
Аноним 21/10/19 Пнд 23:28:14 1501923492
>>1492475
Эх, помню я когда препод по программированию в универе посчитал передачу в функцию ссылку на указатель как каким то неимоверным предом, хехе, как же забавно сейчас вспоминать.
Аноним 22/10/19 Втр 01:17:54 1501953493
>>1492480
Вектор нормально в функцию хуй передашь
Аноним 22/10/19 Втр 02:08:31 1501957494
>>1501923
>передачу в функцию ссылку на указатель
очень подлая вещь, на самом то деле, поведение которой может удивить среднего разработчика
тк в этом случае не производится низводящих преобразований..

Аноним 22/10/19 Втр 02:15:52 1501958495
>>1501953
по ссылочке, по универсальной ссылочке, которая обеспечит move-семантику..
никаких проблем..
разве что вообще дурной тон оперировать контейнерами, в функцию на обработку нужно передавать пары итераторов, указывающих на диапазон..
а если следовать идеологии stl то и такие функции не следует писать, а надо действовать через стандартные алгоритмы, те писать по сути в псевдо-функциональном стиле
Аноним 22/10/19 Втр 02:20:29 1501959496
>>1492480
>Стоит юзать вектор или можно обойтись в принципе пацанским выделением динамического массива в проде? Какие подводные у обоих вариантов.
главный подводный камень - то что, задавая такие вопрсы, ты, по видимому, уже работаешь..
а это пиздец..
Аноним 22/10/19 Втр 02:25:36 1501961497
>>1501959
судя по твоим ответам, ты не работаешь, и не скоро еще станешь
сперва, ведь, надо школу закончить
а там и армия, где ты будешь рассказывать, какой ты у мамы самый умный
Аноним 22/10/19 Втр 03:20:03 1501973498
>>1501961
Дружочек, если у тебя в две тысячи девятнадцатом году возникает мысль "а не выделить мне немного памяти через new", то ты мудак и хуй его знает как прошёл испыталку. Или у вас в конторе все такие отбитые и код с new проходит CR?
Аноним 22/10/19 Втр 05:59:31 1501981499
5YLr5luv.width-[...].jpg (182Кб, 1280x853)
1280x853
Аноним 22/10/19 Втр 09:19:35 1502019500
>>1501981
Синтаксис тебе и так придется выучить (си практически подмножество цепепе). Лучше учи стандартную библиотеку плюсов, если понадобится, выучишь и стандартную библиотеку си.
Аноним 22/10/19 Втр 10:47:23 1502060501
>>1501598
Задача такая: мне приходит массив данных, амплитуды, в двумерной сетке, и я по приходу сразу проверяю, что из этих данных принадлежит уже сформированным кластерам. Картинка похожа на долматинца, черные пятна (с резкой границей) на белом фоне. Так вот мы сканируем долматинца вдоль, и пробуем сразу объединить черные пятна - кластеры.
Кластер - вектор. Я создаю новый вектор с каким-то приблизительным размером и резервирую ещё половину.
По приходу нового измерения проходит поиск по всем формируемым пятнам. Пятно завершилось - уходит из формировалки.
Формируемые пятна хранятся в листе. Параллельности нету нихуя, все ебашится в одном потоке.
Задача вроде как телретически решается в матричном виде, и Eigen очень хорошо заходит с его-то бекэндом, и векторизуется по-хорошему все это говно, но надо как-то в матричном виде все записать.

>>1501310
Мультиаррай почему-то не понравился, не помню почему. Как-то не совсем для задачи подходил.
std::array говорил мне, что многовато на стеке выделяется блядь, не хорошо так. Поэтому взял стд::вектор, там в куче создается все.

>>1501606
> Что-то мне подсказывает, ему для начала нужно с дебага на релиз переключиться
))))

Всем спасибо.
Аноним 22/10/19 Втр 11:32:41 1502073502
Может кто знает. Как сделать так чтобы в подсказке студии члены класса были первыми, а то заебался скролить весь тот срач что валится от сишной либы.
Аноним 22/10/19 Втр 12:12:05 1502099503
Аноним 22/10/19 Втр 13:00:35 1502125504
>>1501957
Да, судя по тому какой фурор тут вызывает упоминание сырых указателей, соглашусь.
Аноним 22/10/19 Втр 13:46:42 1502150505
Хочется написать простенький мессенджер, сейчас пишу серверную часть на плюсах.
Подошёл к моменту когда нужно прикручивать бд.
Хотел обойтись без MySQL,заюзать что нибудь более легковесное и модное-молодежное.
Посмотрел в сторону redis, но насколько понял, это уж слишком что то простое, хранение и извлечение текстовых сообщений там будет неудобным.
Что можете порекомендовать? Mysqlite?
Аноним 22/10/19 Втр 13:57:08 1502161506
>>1502150
ебаш сразу эластик, чтобы поиск было удобнее делать
Аноним 22/10/19 Втр 14:00:14 1502166507
>>1501981
имхо, нужно как минимум прорешать K&R прежде чем браться за изучение крестов
но я сторонник последовательного изучения
Аноним 22/10/19 Втр 14:04:12 1502171508
>>1502060
на проекте нельзя использовать сторонние опенсорс решения? если можно, то не пили велосипед, используй их

Аноним 22/10/19 Втр 14:06:08 1502175509
>>1502171
opencv, tensorflow,, что то аналогичное, в общем
Аноним 22/10/19 Втр 14:11:27 1502180510
>>1502150
персистентность каких данных нужно обеспечить?
Аноним 22/10/19 Втр 14:28:02 1502195511
>>1502180
Текстовые сообщения , ассоциированные с пользователями их приславшими,с беседами в которых эти сообщения были отпралвены и метками времени -
чтобы к примеру для определенной беседы, в которой состоят Петя Ваня и Маша можно было удобно запросить сообщения за последний день, и дальше, если потребуется, или устроить поиск по истории сообщений к примеру.
Или неужто мне предложите это в оперативной памяти хранить?
Аноним 22/10/19 Втр 14:39:58 1502198512
>>1502195
храни в файликах на диске
Аноним 22/10/19 Втр 14:43:01 1502200513
Хочу (пере)написать дерево (не бинарное). Что лучше выбрать - (уник) пойнтер на данные или наследовать нод и добавлять данные-члены в класс нода? Первая штука как-то красивее, а вторая штука позволяет брать данные без node->value->mydatamember, просто node->mydatamember. Пока что написал второе, но почему-то захотелось переписать.
Аноним 22/10/19 Втр 14:51:45 1502206514
>>1502200
> (уник) пойнтер на данные
просто член с данными, пойнтер тут нахуй не нужен. в общем, выбор между хранением в ноде или класса с моей хуйней, или просто всю хуйню в сразу нод добавить.
фикс
Аноним 22/10/19 Втр 15:00:17 1502216515
>>1502206
>>1502200
А, даже переписывать ничего не надо. Просто наследовать и добавить член с данными и у меня два дерева на выбор.
Аноним 22/10/19 Втр 15:13:53 1502230516
Стикер (0Кб, 512x512)
512x512
>>1502073
Помогите, уже устал от батхёрта.
Аноним 22/10/19 Втр 16:22:12 1502263517
Где кряк решарпера скачать можно? Схуяль он платный вообще? Хочу писать хеллоуворлды с комфортом.
Аноним 22/10/19 Втр 16:37:35 1502267518
>>1502230
Купи vs2019 и поставь IntelliCode.
Аноним 22/10/19 Втр 16:40:42 1502271519
Ананасы, спрашиваю без подъёба и транслирую мнение, а не безоговорочное утверждение.
Нахуя учить плюсы в 2к19, если любая вакансия на плюсах == разгребание легаси-говна? В имбэддэде пишут на Си, в вебе совсем другой стэк технологий, там макакаскрипт с зоопарком фреймворков рулят отраслью, микросервисы и распределенные системы пишут на Го нынче.
Если ты не хочешь стать гейм-девелопером с релокейшеном в СШП (ибо в рашке ловить в этой отрасли нечего), то нахуй учить плюсы? Занимает это все дело годы, ибо это плюсы, а выхлоп никакой, 9 работ из 10 для плюсовика - разгребать легаси-дерьмо.
Поправьте, если неправ, так как это мнение, а не утверждение.
Аноним 22/10/19 Втр 16:52:15 1502283520
Есть два типа.
Первый отвечает требованиям StandartLayoutType, второй - нет.

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

Как написать универсальную функцию, либо шаблонную конструкцию выполняющую А для любого из этих типов?
Аноним 22/10/19 Втр 16:52:27 1502284521
>>1502263
найди любого человека со студентческим билетом и на него оформи бесплатную лицуху сидел так 3 года, потом на работе купили

>>1502271
> если любая вакансия на плюсах == разгребание легаси-говна?
Нет.

> Если ты не хочешь стать гейм-девелопером с релокейшеном в СШП (ибо в рашке ловить в этой отрасли нечего), то нахуй учить плюсы?
В любом случае нахуй не надо учить плюсы, если ты планируешь быть игромакакой, надо учить либо хуюнити, либо блюпринты.

> 9 работ из 10 для плюсовика - разгребать легаси-дерьмо.
Да, но тебе никто не мешает устроиться на 10ую работу.

Аноним 22/10/19 Втр 16:53:12 1502285522
>>1502283
if constexpr (is_standard_layout_type) { ... } else { ... }
Аноним 22/10/19 Втр 17:05:16 1502302523
>>1502285
Нужно было решение для с++14, но по твоей наводке нашел enable_if, благодарю.
Аноним 22/10/19 Втр 17:08:56 1502306524
>>1502284
>Нет.
Аргументировать можешь? Где сейчас плюсы незаменимы и широко используются? Про имбэддэд, вэб и всякие микросервисы я говорил - там С++ заменен давным-давно.
Аноним 22/10/19 Втр 17:10:34 1502308525
>>1502284
> Нет
> Да, но тебе никто не мешает устроиться на 10ую работу.

Противоречишь сам себе. Сначала говоришь, что, якобы, не 9 работ из 10 на крестах - разгребание легаси-говна, а потом говоришь, мол, да, но никто не мешает найти 10ую работу. Шта? Определись
Аноним 22/10/19 Втр 17:28:11 1502321526
>>1502308
Большая часть работ говно. Но оно и в вебе, и во всем на свете. Тебе никто не мешает прокачаться и выбирать реально интересные предложения, как сделал я.

>>1502306
> Где сейчас плюсы незаменимы и широко используются?
Все системное программирование, алле. Весь high-performance. Бэкенд всех сервисов яндекса на крестах, например.
Аноним 22/10/19 Втр 17:31:18 1502323527
Почему S вызывается из производного, а Z из базового, разве она не должна переопределяться?
https://ideone.com/Sh0xc8
Аноним 22/10/19 Втр 17:33:04 1502326528
>>1502284
> найди любого человека со студентческим билетом и на него оформи бесплатную лицуху
Где-то это я уже видел... По-моему ты мне и отвечал несколько тредов назад. У меня нет знакомых студентов.
Аноним 22/10/19 Втр 17:34:52 1502327529
>>1502321
> Все системное программирование, алле.
Все системное программирование на Си, а не на плюсах, алло

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

Если честно, мне страшно предположить что случится с Си и плюсами, когда тот же Раст выстрелит и пустит корни в хайтек.
Аноним 22/10/19 Втр 17:37:29 1502329530
>>1502327
> Все системное программирование на Си
Ты хотел сказать, все легаси говно из 90 на Си. Никто на Си уже не пишет. Да, даже жопные контроллеры программируют на плюсах.

мимо
Аноним 22/10/19 Втр 17:40:05 1502332531
>>1502327
> когда тот же Раст выстрелит
То есть никогда, лол.

Как вообще связаны корутины с мультитредингом? Это разные вещи. В бусте они тоже есть, если что.
Аноним 22/10/19 Втр 17:47:24 1502338532
>>1502321
>Бэкенд всех сервисов яндекса на крестах
nop

Аноним 22/10/19 Втр 17:52:31 1502345533
>>1502271
обычно студентиков в вузах учат на си писать (это когда идут курсы по алгоритмикам и все такое)
студентоз потом доучивает кресты
и все, человечек в ловушке, подсел на технологический стек
роботает потом за копеечки и все такое

Аноним 22/10/19 Втр 17:53:38 1502348534
Сап, плюсач.
Хочу на крестах пилить сетевые приложения (с возможным уклоном в последующую разработку сниффера и/или пакет инжектора, для портфолио, так сказать).
Есть два стула: QT Network и Boost.Asio. На какой сесть? В обоих чет не видел интерфейс для сырых сокетов. Что будет лучшим выбором?
Аноним 22/10/19 Втр 17:54:03 1502349535
>>1502323
А хули ты хотел, она ж не виртуальная.
Аноним 22/10/19 Втр 17:55:19 1502351536
>>1502271
>Нахуя учить плюсы в 2к19, если любая вакансия на плюсах == разгребание легаси
Чтобы разгребать легаси.
Аноним 22/10/19 Втр 17:59:11 1502355537
>>1502345
вот я и говорю им, кому нахуй всрались сейчас плюсы? В их манямирке он нужен для перформанса, на деле в компаниях в 2к19 работает принцип "хуяк-хуяк и в продакшн". Софт говно порой выходит, базару нет, но это реалии айти на данный момент. Никто не будет нанимать плюсовика на бэкэнд, если его можно написать на ноде/го, где разработка будет х10 быстрее, без мемори ликов и тонны жопочасов отладки неведомой хуиты. Насчет роли плюсов в имбэддэде тоже очень сомневаюсь, там пишут на Си, напрямую дергая API ОС и не парятся, так как в имбэддэд разработке ООП вообще не нужно, ибо это байтоебство чистой воды, там тупо не нужны такие пласты абстракций. Плюсы в имбэддэд - это все равно, что из пушки по воробьям хуярить.
Аноним 22/10/19 Втр 18:03:04 1502357538
>>1502348
не ломай себе жизнь, пиши подобный софт на Го. Потратишь во много раз меньше времени, сэкономишь нервы, не будешь получать сегфолты и утечки памяти направо и налево. Никто не использует плюсы для сетей в 2к19.
Аноним 22/10/19 Втр 18:04:33 1502358539
>>1502355
> на ноде
Остановите эту обезумевшую студентоту.
Аноним 22/10/19 Втр 18:08:37 1502364540
>>1502348
> в последующую разработку сниффера и/или пакет инжектора, для портфолио
Ебу дал? Ты хоть знаешь как это работает и реализуется? Драйвера писать умеешь?
Аноним 22/10/19 Втр 18:11:39 1502365541
>>1502358
Только не говори ему, на чем написан рантайм ноды.
Аноним 22/10/19 Втр 18:11:48 1502366542
Пиздец, очередные мантры от первокуров. На С++ нигде не пишут, работы нет, пок-пок-пок, памагите с laba.cpp. Летом такой хуйни не было.
Аноним 22/10/19 Втр 18:12:18 1502367543
>>1502364
Я на Си писал сниффер через сырые сокеты, в чем трабла. Да, это не второй уайршарк, но все же.
Умею, но только хэллоуворлдные
Аноним 22/10/19 Втр 18:15:36 1502369544
>>1502367
>уайршарк
Блядь, нахуя вы это делаете? Тебе раскладку переключить выйдет быстрее чем нам прочесть эту хуйню.
Аноним 22/10/19 Втр 18:16:08 1502370545
Аноним 22/10/19 Втр 18:20:05 1502372546
>>1502327
>Все системное программирование на Си, а не на плюсах, алло
Дедуль, щас не 90ые
Аноним 22/10/19 Втр 18:38:28 1502378547
>>1502372
Зашел сейчас в репозиторий ядра линукса на гитхабе: C 96.5% , C++ 1.3%. Плюс слышал, что майкрософт когда то пытались перенести ядро своей ос на с++ и ооп подход и обосрались, потеряв много денег, ядро до сих пор на си. Торвальдс вот ещё всегда топил за си. Оно и логично, так как си создавался как портируемый ассемблер, си гораздо более легковесный язык, чем си++, поэтому абсолютное большинство низкоуровневых системных вещей написано на си.
мимо
Аноним 22/10/19 Втр 18:46:14 1502382548
image.png (6Кб, 624x142)
624x142
>>1502267
>Купи vs2019
Так он и стоит, в intellisense всё в перемешку, вот эту настройку уже покрутил, не помогает.
Аноним 22/10/19 Втр 18:57:43 1502391549
>>1502329
огромная часть говна конкретно под линуксы на сишечке пишется до сих пор. почти все виндовсменеджеры-конпозиторы как один из примеров. не так давно на реимплементацию осома под вейланд, которую хотели на расте сделать, перекатили на си, поскольку не смогли в wlroots под раст (кусок с композитором по крайней мере, остальную часть будут в расте пытаться). собственно, разрабы которые пытаются в suckless обычно пытаются делать говно в си (ебонутые).
Аноним 22/10/19 Втр 19:00:28 1502392550
>>1502378
Много подсистем майкрософта на крестах, собстно, пишем драйвер на С++17, все отлично, лучше, чем сишная блевота.

Вполне возможно, что в 2000 си был выбором лучше, чем С++98 с зоопарком говна. Сейчас си не нужен вообще нигде.
Аноним 22/10/19 Втр 19:07:41 1502396551
Аноним 22/10/19 Втр 19:11:23 1502398552
Аноним 22/10/19 Втр 19:17:58 1502401553
>>1502392
Именно поэтому винда мусор, лол)
А на Линуксе на крестах невозможно писать драйвера
Аноним 22/10/19 Втр 19:29:22 1502407554
>>1502401
> Именно поэтому винда мусор, лол)
О, тут красноглазые дауны приехали. Ладно, с сектантами спорить - себя не уважать.
Аноним 22/10/19 Втр 19:37:28 1502418555
>>1502401
То, что ты ниасилил не значит, что это невозможно
Аноним 22/10/19 Втр 19:40:00 1502420556
>>1502407
Ля, виндузятник порвался
Кто юзает винду среди программистов? Дотнетчики и разрабы игр, ну и те, кто малвари ковыряют, лол
90% разрабов сидят на юникс-лайк ОСях, винда - глючный, костылированный, неудобный мусор для прогера. Она годится только для домохозяек, ради которых и, собственно, разрабатывалась. Ну и для игродаунов.
Цистерну бсодов тебе на ебало, короче))0
Аноним 22/10/19 Втр 19:41:19 1502421557
>>1502418
напиши полноценный драйвер (сетевой или блочный, например) на крестах на Линукс, я поржу. И попробуй закоммитить его в мэйнтри, тебя обоссут быстрее, чем ты думаешь
Аноним 22/10/19 Втр 19:45:38 1502427558
Really+makes+yo[...].gif (112Кб, 240x240)
240x240
>>1502401
> Именно поэтому винда мусор, лол)
> А на Линуксе на крестах невозможно писать драйвера
На линуксе невозможно Х, а мусор почему-то винда.
Это тред си? Почему тут сиктанты?
Аноним 22/10/19 Втр 19:51:29 1502431559
>>1502427
Потому что богоподобный Линукс написан на Си, как ты будешь писать кернел дрова для ядра, написанного на Си, НЕ на Си? Ты совсем что ли еба?)0
Да и вообще, писать кернел на плюсах с его темплейтными оверхедами в участке памяти, где нет пэйджинга (кернел спейс) - такая себе затея. Кресты СТРОГО не подходят для написания ядра, особенно, если надо создать реально шуструю и лаконичную ОС, а не ебучего Франкенштейна
Аноним 22/10/19 Втр 19:52:17 1502436560
>>1502420
да, да, дурачок, мы все поняли уже. Можешь дальше обмазываться своим дерьмом и кукарекать на параше.
Аноним 22/10/19 Втр 19:52:33 1502438561
>>1502421
это проблема не крестов, а сектантов
Аноним 22/10/19 Втр 19:52:59 1502439562
>>1502431
полудурок не знает про extern "C". Ладно, посмеялись над клоуном и хватит.
Аноним 22/10/19 Втр 20:02:22 1502455563
>>1502431
> Потому что богоподобный Линукс написан на Си, как ты будешь писать кернел дрова для ядра, написанного на Си, НЕ на Си? Ты совсем что ли еба?)0
Нет, я не "еба", мне интересно, почему нельзя.
https://stackoverflow.com/questions/10469188/is-it-possible-to-develop-a-loadable-kernel-module-lkm-on-linux-with-c
Почему тут нужен какой-то интерфейс? Почему недостаточно >>1502439?
Ты же не хочешь сказать, что это должно быть НУ ПРОСТО ОЧЕВИДНО каждому, кто может баблсорт написать? Впрочем, зная, какие люди посещают этот сайт, ты вполне можешь оказаться из таких и даже найти единомышленников (которые могут быть как реально умными людьми, способными объяснить почему, так и просто уебанами, которые сами не знают, а просто услышали и повторяют).
Аноним 22/10/19 Втр 20:28:54 1502476564
>>1502348
Бамп! Заебали с вашим срачем, помогите выбрать плиз
Аноним 22/10/19 Втр 20:37:27 1502489565
>>1502476
с сырыми сокетами тебе вообще к системному апи.

А так - boost.asio это стандарт индустрии.
Аноним 22/10/19 Втр 21:10:06 1502513566
Подскажите студенту - долбоебу.

Делаем for(;iterator!=list.end(); ++iterator ) по итератору в листе, и когда находим определенный элемент пишем такую йобу: list.insert(list.erase(iterator), "data");
Так вот, почему после этого цикл по итератору спокойно продолжает идти дальше, если элемент, на который итератор указывает, уже стёрт?
Аноним 22/10/19 Втр 22:04:09 1502533567
>>1502326
Оформись на stepik.org.
Там за прохождение курсов дают 3 месяца idea и resharper, кончится - запишись на ещё курс, пройди немного и получишь ещё лицензию.
Аноним 22/10/19 Втр 22:05:55 1502534568
Почему в c++ нет поддержки больших чисел изкоробки?
Аноним 22/10/19 Втр 22:17:52 1502546569
>>1502513
Я вообще думаю, что ты словил UB, т.к. вообще итератор инвалидироваться должен после такой операции.

А так - ты понимаешь, как удаляется элемент списка? Ссылке на следующий элемент предыдущего присваивается следующий элемент текущего, а для текущего вызывается деструктор данных.
То есть твой итератор указывает на удаленный объект, который внутри себя хранит ссылку на следующий. Делаешь operator++ и итератор перескакивает на следущий, только он теперь стал текущим.
Хотя, по идее, твой итератор должен был указывать на текущий элемент, а текущий теперь - это следующий за удаленным, и после operator++ ты должен был его проскочить.
Попробуй сделать cout для каждого и посмотреть, что выводится.
Аноним 22/10/19 Втр 22:19:31 1502547570
>>1502534
Хрен его знает, пропозал n1692 датирован 2004 годом. И я слышал много разговоров про wide_int. Видать недостандартизировали
Аноним 22/10/19 Втр 22:20:15 1502550571
>>1502513
если у тебя
iterator = list.insert(list.erase(iterator), "data");
То все валидно.

Если именно то, что ты написал - то это UB
Аноним 22/10/19 Втр 22:32:58 1502561572
набиваем 700 пстов и перекатываем (со стухшей шапкой, как всегда)
Аноним 22/10/19 Втр 22:36:15 1502562573
Аноним 22/10/19 Втр 22:36:51 1502563574
>>1502513
>list.insert(list.erase(iterator), "data");
непойму зачем ты так делаешь
разве не проще просто изменить значение элемента на который указывает итератор?

Аноним 22/10/19 Втр 22:51:40 1502568575
123.jpg (57Кб, 746x481)
746x481
>>1502563
Да, просто игрался с мемберами контейнеров и набрел на такое.
>>1502550
Видимо UB, тогда.

>>1502546
В этом и вопрос, что он указывает на удаленный элемент, и всё равно выполняет инкремент на следующий правильно. Вроде ничего не перескакивает, скрин прилагаю.
Аноним 22/10/19 Втр 23:15:36 1502575576
>>1502563
Кстати, вспомнил зачем так делал. У меня там был список из const char*
Аноним 22/10/19 Втр 23:34:09 1502577577
>>1502568
>Выполняет ... правильно
Так итератор же не в курсе, что он ссылается на удаленный объект. А так как это UB, то он инкрементируется правильно в твоей ситуации.
Попробуй в дебаге скомпилить, там есть валидация итераторов, стандарт обещает вызвать std::terminate в такой ситуации.
Либо попробуй другой компилятор, может быть другой результат
Аноним 22/10/19 Втр 23:36:01 1502580578
>>1502391
> огромная часть говна
> под линуксы
Не смеши меня а.
Аноним 22/10/19 Втр 23:42:58 1502585579
Продристалися всем офисом с линуксошизика итт. Ага, дрова не пишут на С++, лол блять! Темплейтный оверхед вообще пушка.

Покормил очевидного тролля
Аноним 22/10/19 Втр 23:47:20 1502587580
>>1502439
Тсс, а то вдруг он сейчас загуглит, как работает линковщик и догадается, что можно еще и ассемблерные спагетти в проект подцепить.
Аноним 22/10/19 Втр 23:55:21 1502590581
>>1502575
хм, и как это меняет ситуацию?
указатель на константные данные это тебе не константный указатель вообще то

Аноним 23/10/19 Срд 01:05:15 1502601582
>>1502580
Да успокойся уже. Никто не трогает твой швитой жму/пинус.
Аноним 23/10/19 Срд 01:16:04 1502604583
>>1502585
Продолжу вопрос линуксошизика: а рили, как писать дрова на линупс на крестах? И надо ли? Если захочешь его законтрибьютить, то рили же нахуй пошлют
мимо растоеб
Аноним 23/10/19 Срд 01:37:20 1502611584
>>1502604
Написатт реально, как и на расте. А вот принятие надо с красноглазиками обсуждать. Винда в этом плане мудрее, достаточно драйвер только подписать
Аноним 23/10/19 Срд 01:57:53 1502615585
>>1502611
А как именно? Ибо в гугле расплывчатая инфа по сабжу, или это я спать хочу просто и засим ебусь в глаза
Аноним 23/10/19 Срд 02:33:17 1502623586
>>1502615
https://github.com/veltzer/kcpp мне кажется ок инфа

Расскажу по своему опыту про шинду - надо тупо несколько функций типа DriverEntry помаркать как extern C, все. Дальше, делай что хочешь без стандартной библиотеки.

хоть шаблоны, хоть лямбды, хоть if constexpr, хоть structured биндинги
Аноним 23/10/19 Срд 03:01:24 1502627587
>>1502623
охуеть там гемора
Не проще реально на си писать дрова на линукс и не выебываться?)
Аноним 23/10/19 Срд 03:10:45 1502629588
>>1502627
не думаю. Только за RAII уже можно си выкинуть на помойку и не вспоминать больше никогда и нигде.
Аноним 23/10/19 Срд 03:21:28 1502630589
>>1502580
анон, если ты уверен в своей точке зрения, то говори её полностью и прямо, а не ограничивайся пассивно-агрессивными подпиздываниями и всякими намеками.
Аноним 23/10/19 Срд 10:17:45 1502742590
>>1502398
С ней не лучше, хотелось бы чтобы именно члены класса были первыми, а не всякий срач с каких-то .h файлов.

Как вы с этим живёте? IntelliSense для C# в разы лучше работает.
Аноним 23/10/19 Срд 10:44:34 1502750591
>>1502577
Всё, разобрался.

vector::erase
Removes from the vector container and calls its destructor but If the contained object is a pointer it doesnt take ownership of destroying it.
(Хоть тут и для вектора, я думаю оно работает аналогично и для других контейнеров)
https://stackoverflow.com/a/6353169/7711537
Аноним 23/10/19 Срд 11:34:35 1502791592
>>1502150
О, тоже мессенджер пилишь? Я постгрес взял, полёт нормальный.
Аноним 23/10/19 Срд 13:38:34 1502888593
>>1502742
C# вообще говно для макак, как можно пользоваться таким неудобным говном, которое с собой ещё и гроб в виде object таскает.
Аноним 23/10/19 Срд 13:45:54 1502896594
>>1502888
Вот только оно на приктике удобней. Ну ка сделай мне split строчки без ебли на плюсах.
Аноним 23/10/19 Срд 13:48:13 1502897595
На связи ваша любимая вниманиеблядь из Нвидии.

Сходил на собес в Московский хуавей по фану, на сениор крестомакаку. Слышал про кучу обещаний золотых гор, что хуавей платит. На деле:

Все числа без вычета 13%, т.е. на руки меньше.

Зарплата - 260к ежемесячно. Если ты работаешь лучше, чем 5% конченых долбоебов - еще 2 зарплаты ежегодно. Если лучше, чем 50% долбоебов - еще 1 сверху, итого 3. Если лучше, чем 95% долбоебов, еще одна - итого 4.

Sign-on бонус - 1 зарплата.

Короче, ожидал сильно большего, такие делы.
Аноним 23/10/19 Срд 13:59:08 1502904596
>>1502896
Что там делать то, string поддерживает индексацию, дальше элементарно
Аноним 23/10/19 Срд 14:08:38 1502907597
>>1502904
Можно ещё бахнуть стрингстрим, например, чуть быстрее накодить выйдет
Аноним 23/10/19 Срд 14:21:19 1502920598
Посоветуйте какую нибудь тему для курсовой. Что то связанное с играми.
Аноним 23/10/19 Срд 14:22:13 1502921599
>>1502920
ну, напиши двигло для вижуал новелл на SFML, или простенькую 3д игру на SDL
Аноним 23/10/19 Срд 14:22:24 1502922600
>>1502904
А если сторона в utf8? Как ты будешь изьебываться тогда?
Аноним 23/10/19 Срд 14:22:29 1502923601
>>1502921
не SDL, а OpenGL, самофикс
Аноним 23/10/19 Срд 14:24:20 1502926602
>>1502897
Что надо знать, чтоб в нвидию попасть на мидла, если там такие нужны?
Аноним 23/10/19 Срд 14:30:53 1502931603
>>1502922
wstring заюзаю, в чём проблема?
Аноним 23/10/19 Срд 14:40:57 1502941604
>>1502926
Не помню, чтобы были мидловые крестовакансии, но, в любом случае - тебе нужно только идеальное знание С++, включая С++17, т.к. мы пользуемся самыми последними фишечками, и стабильно переезжаем на новые компиляторы\стандарты.
Аноним 23/10/19 Срд 14:58:17 1502963605
Двачик, насколько адекватно делать поля класса ссылками на объекты? Именно ссылками, не указателями. Лично меня это повергло в дичайший шок, я даже не задумывался, что так можно делать.
Аноним 23/10/19 Срд 14:58:22 1502964606
>>1502904
>Что там делать то, string поддерживает индексацию, дальше элементарно
А на C# я просто пишу String.Split() и получаю нужное. Элементарная разбивка строки на подстроки в плюсах это боль.

В общем на мой вопрос никто так и не ответил, а жаль.
Аноним 23/10/19 Срд 15:03:05 1502971607
>>1502964
>Элементарная разбивка строки на подстроки в плюсах это боль.
Нет никакой боли, обычный split как раз обычно не совсем подходит и тогда в шарпах приходится писать какие-то костыли через indexof, когда в плюсах можно удобно всё сделать и потратить намного меньше ресурсов.
Аноним 23/10/19 Срд 15:03:11 1502972608
>>1502964
Тебе трудно написать функцию строчек из десяти?
Аноним 23/10/19 Срд 15:04:48 1502977609
Аноним 23/10/19 Срд 15:07:14 1502980610
>>1502971
>обычный split как раз обычно не совсем подходит и тогда в шарпах приходится писать какие-то костыли через indexof
В этом то и суть, когда не подходит то пишешь что тебе там удобно. В 99% случаев достаточно функционала из коробки.

>>1502972
Миллоны программистов в миллионах проектов каждый раз пишут функцию из 10 строчек. Вместо ёбанных рейнджей охуеть блять begin() end() просто спрятали лучше бы сплит сделали.
Аноним 23/10/19 Срд 15:10:00 1502983611
>>1502980
Вот как раз Split из коробки говно, сколько раз не юзал, всегда было проще самому написать, чем ебаться с ним.
Аноним 23/10/19 Срд 15:12:05 1502984612
>>1502977
ясен хер, как еще писать системный софт под винду?
Аноним 23/10/19 Срд 15:14:10 1502988613
>>1502984
Я просто недавно начал в него вкатываться и боюсь как бы не остаться никому не нужным с ним. Что скажешь по поводу GDI+?
Аноним 23/10/19 Срд 15:14:33 1502989614
>>1502983
Факт в том что он есть, и не надо писать что-то своё каждый раз. Стандартная либа плюсов очень ограничена по сравнению с шарпом.
Аноним 23/10/19 Срд 15:17:22 1502991615
>>1502989
>Стандартная либа плюсов очень ограничена по сравнению с шарпом.
Что ты подразумеваешь под стандартной либой? Шарпы тебе сразу всё говно тянут, в плюсах всё разбито по нужным блокам. Буста и Стл хватит с головой чтобы покрыть все функции из библиотеки шарпов.
>Факт в том что он есть, и не надо писать что-то своё каждый раз.
Пиздуй тогда в джаваскрипт, там как раз уже всё написал за тебя, только будешь функции вызывать.
Аноним 23/10/19 Срд 15:18:51 1502992616
>>1502988
>GDI+?
Не нужно, когда есть OpenGL, Direct2D\Direct3D. Но в любом случае, я больше по вещам типа файловой системы, и прочей системной херне, а не графончику. Специфика команды.
Аноним 23/10/19 Срд 15:27:58 1503004617
Вечер в хату

Объясните мне, почему у лямбда-функций не может быть дефолтных аргументов?
Аноним 23/10/19 Срд 15:30:19 1503010618
Аноним 23/10/19 Срд 15:32:46 1503016619
>>1502991
>Шарпы тебе сразу всё говно тянут, в плюсах всё разбито по нужным блокам.
Точно так же всё разбито на отдельные части.

>Буста и Стл хватит с головой чтобы покрыть все функции из библиотеки шарпов.
Буст таки не входит в стандартный комплект.

>Пиздуй тогда в джаваскрипт, там как раз уже всё написал за тебя, только будешь функции вызывать.
Хуйли ты злой такой? Или о плюсах как о мёртвых надо - или хорошо или ничего?
Аноним 23/10/19 Срд 15:47:24 1503035620
>>1503010
На всякий случай
Раз они косплеят функции, то пусть будут максимально на них похожи, чтобы меньше деталей запоминать - например за этим
Аноним 23/10/19 Срд 15:53:32 1503046621
И что это вообще за хуета с захватом локальных переменных? Почему бы просто разрешить доступ сразу ко всему из внешнего скоупа?
Аноним 23/10/19 Срд 15:55:09 1503050622
>>1503046
Потому что каждую переменную может потребоваться захватывать по разному.
Аноним 23/10/19 Срд 16:11:08 1503072623
>>1503046
[=] или [&] тебе в помощь, блядь
Аноним 23/10/19 Срд 16:17:37 1503082624
>>1502750
таки лучше было бы чтобы ты вместо сырых указателей в своем списке использовал unique_ptr
а то что ты делаешь, делал бы через обычное присваивание
так было бы меньше вероятности что ты отстрелишь себе ногу
Аноним 23/10/19 Срд 16:19:13 1503085625
>>1503035
Они косплеят функторы.
Аноним 23/10/19 Срд 16:25:40 1503090626
>>1502896
>Ну ка сделай мне split строчки без ебли на плюсах.
Boost tokenizer
или
Boost String Algorithms - split
Аноним 23/10/19 Срд 16:29:49 1503095627
>>1502897
ты зажрался, дружок
даже 200к, даже в дс - просто заоблачные деньги, просто деньги которые решают все проблемы..

Аноним 23/10/19 Срд 16:31:07 1503098628
>>1503090
Тащить огромную либу ради функции, которая во всех нормальных языках есть из коробки. Плюсы такие плюсы
Аноним 23/10/19 Срд 16:31:24 1503099629
>>1503004
потому что основное применение лямбда функции - сконструировать ее по месту и сразу передать на выполнение

Аноним 23/10/19 Срд 16:31:29 1503100630
>Байтойобство здесь — https://gcc.godbolt.org/ все очень удобно оформлено даже для нюфагов, куча версий компиляторов, дают тыкать настройки ручками — ляпота короче.
А есть такой же сайт для байткода джавы?
Аноним 23/10/19 Срд 16:33:20 1503103631
>>1503046
потому что лямбды в крестах пытаются косплеить замыкания в функциональных языках
но, конечно же, следуюет помнить что лямбды у нас таки не полноценные замыкания и мы не можем делать на них те штуки что делают в языках лисп-семейства

Аноним 23/10/19 Срд 16:34:50 1503104632
>>1503098
ты троллишь что ли?
ну дык напиши тогда свою функцию токенизации на stringstream, она будет размером строк в 10

Аноним 23/10/19 Срд 16:37:07 1503108633
>>1503104
Писать свою функцию, которая во всех нормальных языках есть из коробки. Плюсы такие плюсы
Аноним 23/10/19 Срд 16:37:58 1503111634
>>1503095
я получаю 430 каждый месяц, зачем мне идти на 260 * 0.87 + 2-4 зарплаты бонусом
Аноним 23/10/19 Срд 16:40:11 1503114635
>>1503111
Пиздишь же. Это 6700$ (~80к в год) бля, а может и не пиздишь
Аноним 23/10/19 Срд 16:40:54 1503115636
>>1503111
был бы твоим манагером, тебя бы выгнал на мороз, набрал бы на твое место 3х бородатых синьоров-помидоров за 120к и еще бы на пару стажеров денег хватило

Аноним 23/10/19 Срд 16:42:25 1503116637
>>1502623
> Дальше, делай что хочешь без стандартной библиотеки.
Можно и с ней, только придется переопределять всякие new/delete и прочее.
Аноним 23/10/19 Срд 16:46:46 1503119638
>>1503111
Ай пиздабол, нет таких зп в ДС, даже в срунвидии. Да и выше ты писал, что хуйней какой-то занимаешься, а не конкретно дрова пилишь. Врёти.
Аноним 23/10/19 Срд 16:47:41 1503120639
>>1503114
Я сам в ахуе, серьезно.

>>1503115
Хех, друг. У нас больше года была открыта вакансия на тот же грейд\зп, что и у меня. Хуй кто прошел, причем сильно не валили.
Аноним 23/10/19 Срд 16:48:28 1503122640
>>1503119
Дрова пилятся в Санта Кларе, мы тут тоже дохуя полезного в Московском офисе делаем.
Аноним 23/10/19 Срд 16:49:14 1503123641
>>1503120
> больше года была открыта вакансия на тот же грейд\зп, что и у меня
> Хуй кто прошел, причем сильно не валили
А вот тут пиздишь точно
Аноним 23/10/19 Срд 16:54:04 1503128642
>>1503123
Я персонально собесил людей, и потом фейспалмил, когда приходят додики, хотят 300 тысяч зарплаты, и даже не знают, что такое вариадик шаблон. Или там арифметику указателей сложнее чем инкремент указателя не знают. Про что-то адванцед, типа мув семантик вообще 2 человека рассказали за год (собстно, их и наняли, сидят рядом со мной, но вакансий было штуки 4, насколько я помню).
Аноним 23/10/19 Срд 16:58:28 1503135643
>>1503128
>типа мув семантик вообще 2 человека рассказали за год
Вот тут поддвачну, из кучи собеседуемых мной людей об этом человека три рассказали. И то пиздец как обзорно есть подозрения, что они просто смогли перевести слово move на русский язык
Аноним 23/10/19 Срд 16:58:50 1503136644
>>1503128
Прям вообще не знали? Или использовать не умели?
Аноним 23/10/19 Срд 17:01:54 1503140645
>>1503136
Друг, ты идешь на вакансию со стартовой зарплатой 280-300к на руки. Ты на эти деньги мне должен обьяснить как это все работает, написать простенький move-only класс, и обьяснить, в идеале, еще и про forwarding reference.

Звучит сложно, но на деле - это пара десятков страниц из книги Скотта Майерса про модерновый сиплюсплюс. И да, мы это активно используем в коде, а не доебываемся потому-что можем.
Аноним 23/10/19 Срд 17:04:42 1503143646
while(r){
r>>temp;
r - istrinstream, проблема в том, что while исполняется на 1 раз больше чем слов в строке, почему?
Аноним 23/10/19 Срд 17:05:12 1503144647
>>1503140
> move-only класс
Что это значит?
Аноним 23/10/19 Срд 17:06:21 1503147648
>>1503144
класс, который нельзя скопировать, только переместить.
Каноничный пример - std::unique_ptr
Аноним 23/10/19 Срд 17:07:33 1503150649
>>1503147
Чет слишком легко для собеса на такую зарплату
Аноним 23/10/19 Срд 17:09:11 1503152650
>>1503140
>Ты на эти деньги мне должен обьяснить как это все работает
А хули тут рассказывать то? Просто же компилятор может взять и скопипастить данные из другого класса не делая при этом deep copy и оставляя перемещаемый объект в невалидном состоянии. Все временные объекты ||они справа обычно от знака = || rvalue.

> move-only класс
struct A {
A(&&) = delete;
A operator= (A&&) = delete;
A (const A&) { /do something/ }
A operator=(const A&) { /do something/ }
}
Оно что ли?
Аноним 23/10/19 Срд 17:09:52 1503153651
>>1503152
Блядь, это же не дискорд, тут спойлеры иначе пишутся
Аноним 23/10/19 Срд 17:10:05 1503154652
>>1503150
Это только один вопрос из многих. Все что мы требуем - знание С++, не более. Но его вообще почти никто не знает, только какие-то куски, понимания вообще нет у среднего претендента на сениор девелопера. Ну и да, мы требуем модерн, как я выше писал. Если ты в 2019 году остановился на С++11, ну, сорьки, что еще сказать. Мы переедем на С++20 как только студия начнет его поддерживать.
Аноним 23/10/19 Срд 17:10:59 1503155653
Почему все пользуются студией, а не clion?
Аноним 23/10/19 Срд 17:11:22 1503156654
>>1503140
Так я это все узнал на первом курсе еще. Могу в нвидию идти работать?
Аноним 23/10/19 Срд 17:11:36 1503157655
>>1503152
>А хули тут рассказывать то?
Вот ты не поверишь, даже этого добиться от среднего претедента уже проблема.

> move-only класс
Ну, подразумвается, что есть какой-то ресурс еще, который надо переместить. Например хэндл, или указатель, или что-то еще тривиально-не-копируемое.
Аноним 23/10/19 Срд 17:12:48 1503158656
>>1503156
Ну, останавливать тебя от подачи резюме точно я не буду.
Аноним 23/10/19 Срд 17:25:26 1503167657
image.png (45Кб, 436x507)
436x507
>>1503157
> Ну, подразумвается, что есть какой-то ресурс еще, который надо переместить. Например хэндл, или указатель, или что-то еще тривиально-не-копируемое.

Ну это прям жуть как сложно. мегапримитивный unique_ptr
Аноним 23/10/19 Срд 17:26:53 1503171658
>>1503167
ну, собстно, да. Как будут вакансии - приходи, рофл
Аноним 23/10/19 Срд 17:29:56 1503175659
В нвидии тоже опенспейс?
Аноним 23/10/19 Срд 17:31:13 1503177660
>>1503175
за 430к я готов устроить опенспейс хоть у меня в анусе
Аноним 23/10/19 Срд 17:32:09 1503179661
>>1503175
да, но он более-менее комфортный нет гигантских пространств, тупо 1 очень вытянутая комната на каждом этаже.
Аноним 23/10/19 Срд 17:36:35 1503184662
>>1503171
Млять, серьёзно что ли люди, которые идут на позицию сеньера с зп в 400К не могут написать такое? Мне сейчас с моей зп в 30к стало просто неимоверно обидно
Аноним 23/10/19 Срд 17:38:35 1503186663
>>1503184
Все настолько плохо, на полном серьезе. Но, я повторюсь, это далеко не единственный вопрос с собеса.
Аноним 23/10/19 Срд 17:38:39 1503187664
>>1503184
30к даже джуны не получают. Ты что то делаешь не так.
Аноним 23/10/19 Срд 17:40:23 1503188665
>>1503186
>Все настолько плохо, на полном серьезе. Но, я повторюсь, это далеко не единственный вопрос с собеса.
Можешь ради интереса кинуть 1-2 самых сложных лол
Аноним 23/10/19 Срд 17:41:41 1503191666
>>1503187
Просто это не Москва и не город-миллионник. Когда я был джуном, то зп вообще была 17к не знаю, почему я не уехал никуда
Аноним 23/10/19 Срд 17:42:43 1503193667
>>1503188
написать вариадик тимплит, который принимает кучу разных чисел (все беззнаковые, но разные по размеру), возвращает их сумму, и падает со статик ассертом, если хоть что-то из аргументов не число. Но это бонусный вопрос. Смог написать 1 из двоих нанятых.
Аноним 23/10/19 Срд 17:45:20 1503198668
>>1503193
Ну по памяти такую хуйню сложно написать, с гуглом за минуту справился бы.
Аноним 23/10/19 Срд 17:45:24 1503199669
>>1503188
еще многопоточку спрашиваем (обожаем ее), ну и вообще, дефолтные вопросы за эксепшены\полиморфизмынаследования. Так то, ничего сложного, если ты не отстал на 10 лет от тренда.
Аноним 23/10/19 Срд 17:45:54 1503201670
>>1503198
я по памяти напишу за минуту на доске. Алсо, давали гуглить в качестве эксперимента - все равно не писали.
Аноним 23/10/19 Срд 17:51:21 1503207671
Аноны, а в ваших коллективах есть люди с проблемами речи? Как к ним относятся, влияет ли это на продуктивность?
Аноним 23/10/19 Срд 18:04:46 1503216672
image.png (23Кб, 473x235)
473x235
>>1503193
> написать вариадик тимплит, который принимает кучу разных чисел
Ты сейчас серьёзно? Это типа сложно да ещё и с гуглом?
Писал по памяти (давно не пользовался, на работе чертовы деды на 11 сидят).
В 17 можно ещё проще, но я не вспомню точно синтаксис
Что-то типа такого

template<typename T, typename... Args>
auto sum(T a, Args ...args)
{
return args + ... + a;
}
Но вот тут я затрудняюсь сказать, как static_assert'ом чекнуть все значения
Аноним 23/10/19 Срд 18:04:58 1503217673
>>1503207
ПМ картавит, старший разраб заикается, я (тимлид) часто чрмлагтсаарлмпоордзж говорю или что-то подобное, когда параллельные мысли в голове.
Всем пох.
Шипилявого тестера травим
Аноним 23/10/19 Срд 18:11:37 1503225674
>>1503217
Тестера грех не травить
Аноним 23/10/19 Срд 18:17:48 1503231675
>>1503216
Ну, тоже да, такой ответ вполне устроит.
Все настолько плохо на рынке труда нынче.
Аноним 23/10/19 Срд 18:29:34 1503237676
Стоит устраиваться джуном за 45к? Думаю год поработать и свалить. О компании пишут, что она говно и работают там в основном студенты без опыта, которых она и эксплуатирует.
Аноним 23/10/19 Срд 18:32:28 1503240677
>>1503237
первая работа должна быть любой. Ты на опыт работаешь. Дальше уже выбирать можешь.
Аноним 23/10/19 Срд 18:35:28 1503243678
>>1503240
Ну не должна, но если других вариантов нет, то пусть работает. Уйти можно всегда. А так хоть будет что заявить на следующей. Так что да, стоит, если нет других вариантов
Аноним 23/10/19 Срд 20:19:35 1503325679
>>1503216
> писал по памяти
> скрин из ide
Пиздежом пахнет.
Аноним 23/10/19 Срд 20:27:52 1503326680
>>1503216
Для варианта со сверткой можно if constexpr сделать, я думаю. Компайл-тайм как раз, под условия подходит. Свёртка же, кажется, не требует одного только return в теле функции.

Кстати, нвидианон, а нужна функция, которая съедает слагаемые аргументами функции, не аргументами шаблона?
Можно же написать sum<1, 2, 3, 4, 5, 6>::value, по аналогии с компайл-тайм факториалом, насколько я понял шаблонную магию.
Аноним 23/10/19 Срд 20:30:36 1503327681
>>1503326
Пометка к первому абзацу: смотрел лекции Хандельянца(который главный разраб pvs studio), он сказал, что способ из C++17 потом компилятором разворачивается в тот код, который у тебя на скрине. То есть, достаточно проверить параметр "а" на беззнаковость, по идее.
Аноним 23/10/19 Срд 20:37:04 1503329682
>>1503154
А что на счёт каких-нибудь йоба-шаблонов? Они шибко используются?
Аноним 23/10/19 Срд 21:00:51 1503342683
>>1502963
Конечно можно. Только следи за временем жизни, чтобы объект по ссылке не удалился раньше класса, в котором он используется.
Аноним 23/10/19 Срд 21:11:17 1503350684
>>1503217
> Шипилявого тестера травим
Ну че вы как нелюди, а.. Ему и так хуево наверное.
Аноним 23/10/19 Срд 21:16:21 1503353685
>>1503325
це ide - Visual Studio Code. Ничего, кроме как синтаксис подсвечивать , она не умеет. Об анонах забочусь, чтоб они не мучились, читая чёрно-белый код
Аноним 23/10/19 Срд 21:21:05 1503357686
>>1503342
То что можно - это понятно. Вопрос больше в том, насколько это нормальный подход. По моему это в разы хуже, чем юзать указатели. Шанс получить dangling reference точно такой же, как и удалить объект по указателю где-то и получить указатель на невалидную память
Аноним 23/10/19 Срд 21:22:28 1503358687
>>1503326
>Для варианта со сверткой можно if constexpr сделать, я думаю. Компайл-тайм как раз, под условия подходит. Свёртка же, кажется, не требует одного только return в теле функции.

Как то я вообще не могу понять, как ты сюда хочешь if впихнуть
Аноним 23/10/19 Срд 21:27:41 1503360688
>>1503329
CRTP и тот же самый variadic template ты обязан понимать, type_traits туда же, forwarding туда же, на всякий случай ещё boost::mpl/mp11/fusion/hana должен понимать

мимо другой аное
Аноним 23/10/19 Срд 21:35:26 1503370689
>>1503179
Это же наоборот уебанство, лучше пусть коллеги подальше сидят, чтобы я их пердёж не слышал а они мой
Аноним 23/10/19 Срд 21:36:38 1503371690
>>1503329
Да, но немного. Каждому инструменту свое место применения, и мы не перебарщиваем с этим.

>>1503326
Иф констэкспр тоже можно, если ты вариадик хочешь без перегрузки на конец рекурсии делать
Аноним 23/10/19 Срд 21:44:08 1503382691
>>1503357
> По моему это в разы хуже, чем юзать указатели.
Это в разы лучше.
>Шанс получить dangling reference точно такой же, как и удалить объект по указателю где-то и получить указатель на невалидную память
Шанс получить висящую ссылку нулевой. Нужно просто™ следить за временем жизни своей хуйни.
Если ты не можешь проследить за временем жизни - то у тебя нихуя не получится даже с указателями.
23/10/19 Срд 21:45:29 1503385692
Нахуя так много говна на цппкон залили? Теперь придется рыться в этих сотнях видео и искать годноту, пиздец! Может кто-то выделил для себя чьи-то выступления? Кидайте сюда.
Аноним 23/10/19 Срд 21:46:22 1503387693
Это, мож перекатить тред уже?
Аноним 23/10/19 Срд 21:49:15 1503390694
>>1503382
> Нужно просто™ следить за временем жизни своей хуйни.

Точно такая же ситуация и с указателем. Надо просто™ следить за временем жизни своей хуйни а лучше забыть об этом говне и взять std::shared_ptr
Аноним 23/10/19 Срд 21:50:23 1503392695
>>1503387
Ну так дерзай, хули мы за тебя что-то делать должны?
Аноним 23/10/19 Срд 21:52:05 1503393696
>>1503390
Блядь, я думал ты студентик, а ты долбоёб оказывается.
Аноним 23/10/19 Срд 21:58:46 1503397697
Аноним 23/10/19 Срд 22:04:45 1503401698
>>1503393
Пояснишь?
В данном случае разница между ссылкой и указателем в том, что ссылка всегда на что-то ссылается (не факт, что на что-то валидное, ибо никто не мешает хуйнуть в неё объект, которой впоследствии разрушится при выходе из scope) и её не нужно уничтожать, ибо за объект отвечает кто-то другой.
С указателем точна та же херня. Его можно забыть инициализировать или можно разрушить объект, на который он указывает. И кто-то должен удалить его. Возможно кто-то другой
Каких-то явных преимуществ ссылок вообще не видно. А недостаток - крайняя неочевидность того, что конструктор класса или метод принимает ССЫЛКУ, которую потом ещё и хранит.

shared_ptr решает все эти проблемы. Его хуй сделаешь невалидным и не нужно следить за его уничтожением. Чекать ifом его элементарно. Да, можно с пеной у рта орать, что его копировать медленно, но эти несколько наносекунд от нескольких копирований никакой роли не сыграют
Аноним 23/10/19 Срд 22:12:42 1503407699
>>1503401
А атомик счётчик внутри shared_ptr - это норма? 40 тактов на инкремент против одного?
Аноним 23/10/19 Срд 22:19:04 1503412700
>>1503407
А ещё в каком-то из тредов видел, что написанная с shared_ptr программа - нездоровая, что ее можно переделать на unique_ptr и победить проблемы.
Но это неточно, только слухи.
Аноним 23/10/19 Срд 22:30:40 1503416701
>>1503412
А где вообще может возникнуть необходимость ссылаться на один объект сразу нескольким господам? Многопоточка?
23/10/19 Срд 22:33:42 1503417702
>>1503412
Так и есть. Даже на CppCon'e об этом выступление есть и не одно.
23/10/19 Срд 22:41:50 1503422703
Аноним 23/10/19 Срд 22:58:17 1503439704
>>1503416
ну смотри: есть несколько пользователей ресурса
как только пользователей этого ресурса не станет или он им больше не понадобится, ресурс уничтожается
вот и все

Аноним 23/10/19 Срд 23:00:18 1503441705
>>1503385
выступление чувака в шапочке из фольги
охуенное

Аноним 23/10/19 Срд 23:03:36 1503442706
>>1503237
как можно эксплуатировать студента без опыта?
с него же хуй пользы, лол
только вред
Аноним 23/10/19 Срд 23:04:57 1503443707
>>1503231
>Все настолько плохо на рынке труда нынче.
обычные голодные игры
капитализм хуле
один выжил, получает свои 300к и ему заебись
остальные как крысы забились в свои норы, откуда они попытались вылезть
или уже здохли к 30ти-40ка годам
причем молча

Аноним 23/10/19 Срд 23:06:24 1503444708
>>1503216
уси-пуси
с халявной сверсточкой то и птушник это может сделать
Аноним 24/10/19 Чтв 01:19:12 1503531709
>>1503401
Ты непробиваемый. Если в коде я вижу ссылку, значит я могу быть уверен, что объект не разрушится, пока живёт этот класс. Если я вижу указатель, значит стоит ожидать, что какой-нибудь уёбок может сделать его невалидным.
Самый простой пример: нужно вывести в диалоге список лучших аниме тайтлов, т.е. сформировать список -> создать диалог -> установить ему список -> показать. Предлагаешь делать shared_ptr<vector<T>>? Или может передавать туда T★?
99.9% всех потребностей любого крестовика - это создать объект на стеке/через make_unique и передавать ссылку на него.
Почитай на досуге
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#rsmart-smart-pointers
Аноним 24/10/19 Чтв 08:44:44 1503606710
>>1496995
Вот это '->' и это '().' одно и тоже, следовательно ты делаешь ((t_).f_)(args ...)
Ты обращаешься к члену c именем
f_ типа сласса t_
Аноним 24/10/19 Чтв 08:46:10 1503607711
>>1503606
почему-то знак звездочки исчез перед f_
Аноним 24/10/19 Чтв 10:11:49 1503642712
Аноним 24/10/19 Чтв 10:38:05 1503657713
>>1503642
Меня больше удивляет зачем они на сеньоров приходят собеседоваться. Тут в чатах сеньоры устройство процессора и ОС знают на приличном уровне, математическую базу имеют и 10+ лет опыта, а у этого анона приходят полумидлы видимо с надеждой что прокатит, я хуй знает как это еще можно обьяснить.
Аноним 24/10/19 Чтв 11:29:39 1503696714
>>1503657
А ещё потому что хуй его знает, когда ты джун, миддл или сеньор.
Я изучаю плюсы для себя, смотрю лекции/читаю книги/практикуюсь/пишу мелкие утилиты на работе, вроде знаю уже много(лол), но на джуна не потяну - нет опыта.
Более того, я на основной работе имею знания сеньора(судя по тому, как у нас собеседуют на эту вакансию, прошел бы собес), но опыта работы полтора года и максимум тяну на миддла, потому что одних знаний мало. Странная вообще градация, как по мне - но другой нет.
Аноним 24/10/19 Чтв 13:50:53 1503766715
>>1503696
Ну так мало знать язык, надо еще и уметь навыки работы в продакшене. Можешь быть хоть братом Дурова, если ты будешь тратить полтора месяца чтобы написать охуительно быстрый йоба-боба рест-сервер просрав все дедлайны, то бизнесу ты нахуй не нужен, наймут пхп макаку которая твою задачу сделает за неделю и всё.
Аноним 31/10/19 Чтв 19:56:22 1510123716
с++ или с
Аноним 01/11/19 Птн 01:39:14 1510379717
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов