Двач.hk не отвечает.
Вы видите копию треда, сохраненную 16 ноября 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
image.png350 Кб, 600x350
C++ №95 /cpp/ # OP 1492442 В конец треда | Веб
Вместо шапки:
https://github.com/sosachbot/cppthreadhat/wiki

Ответы на вопросы:
http://en.cppreference.com/w/
http://www.cplusplus.com/reference/

Прошлый тонет тут >>1482318 (OP)
2 1492444
Почему все до сих пор пишут классы в С++, разделяя хэдер и реализацию? Это все из-за наследия сишки или имеет какой-то сакральный древний смысл.
3 1492445
>>1492424

type* - это же именно отдельный тип данных, следовательно, лучше относить его к первому варику.
4 1492464
Что означает комбинация int &Arr? Я понимаю что это такое по отдельности и частично вместе, но как работает &?
5 1492473
>>492464
Ты не знаешь что ссылка значит, или что?
6 1492475
>>492464
Ну, как бы имелось в виду int *&Arr.
7 1492480
Стоит юзать вектор или можно обойтись в принципе пацанским выделением динамического массива в проде? Какие подводные у обоих вариантов.
8 1492481
>>492473
Я понимаю как примерно работают ссылки и указатели по отдельности, я даже понимаю что значит *a = &b, но вот эту штуку я вижу впервые и не могу нагуглить что это.
9 1492482
>>492475
Ссылка на указатель?
Это та же ссылка, только на указатель.
вроде как, впервые вижу чтоб вобще кто то так писал
10 1492485
>>492482

>Ссылка на указатель?


Может это как ссылка от указателя на целочисленный тип? То есть это может пригодится при работе с массивом (не ебу как, но может).
image.png124 Кб, 1351x753
11 1492516
Какого хера автор говорит, что пользователь не сможет НАПРЯМУЮ работать с этими переменными? Какая разница, сделано это через геттеры и сеттеры или просто через публичную переменную, все равно доступ такой же. Я, блять, не понимаю нахуя это тут. В джаве это понятно зачем городить, но в кресты ЗОЧЕМ.
12 1492517
М о д у л и
о
д
у
л
и
13 1492523
>>492516
Когда ты пишешь один, то наверное незачем. А если несколько человек, то у каждого своя задача и кто то может написать одну часть программы, а другой использовать ее не вникая в то как оно работает, и взаомодействовать с ней с помощью геттеров и сеттеров.
14 1492525
>>492523
Ну, так, если он получает значение просто публичной переменной, то он тоже особо не будет вникать.
15 1492528
>>492516
Публичные переменные не нужны. А ещё может понадобиться потокобезопасность, тогда с методами можно сделать так, чтобы было последовательное выполнение при одновременных вызовах.
16 1492530
>>492444
И Н К А П С У Л Я Ц И Я
Н
К
А
П
С
У
Л
Я
Ц
И
Я

Это такая тонкая перекличка байтойобушков?
17 1492534
>>492516
Тут это нахуй не нужно. Видимо имеется в виду что в нормальном классе будут проверки дат на валидность.
18 1492537
>>492530

> Это такая тонкая перекличка байтойобушков?


> C++ №95 /cpp/


А ты толковый.
19 1492539
>>492525
Возможно, что прежде чем записать значение в переменную нужно это значение обработать. Например проверить чтобы значение лежало в определенном диапазоне, а если нет, то привести значение в необходимый вид.
20 1492540
>>492530
Вот, сука, нигде такой хуйни нет, но в с++ есть.
Я имею ввиду ТАКАЯ инкапсуляция посредством хэдеров.
21 1492547
>>492444
А что с этим не так? Поясните, я правда не знаю, плохо знаком с другими языками. Как по другому инклюды делать? Тебе же не нужна вся реализация, она в библиотеках, тебе нужен только интерфейс.
22 1492553
>>492444

>Это все из-за наследия сишки


Yes.

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


Tut tozhe yes. Правда не древний нихуя.

Во-первых, потому что в плюсах всё ещё нет модулей (выйдут в 20 версии, уже утверждены), и хэдэры подставляются как есть — текстом. Каждый #include — это просто текстовая подставка, которую надо парсить по новой. В более новых языках есть модули и код всегда парсится только 1 раз.
Во-вторых, а где ты реализацию с интерфейсом-то в куче видел? В го и скриптовых яязыках?
23 1492561
>>492553

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


Разве в джаве не так? Ты же не делаешь джва файла на класс.
24 1492658
>>492442 (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 там где требуется и это звучит как залупа.

По моему я какой то хуйней заморачиваюсь, но для меня важно.
25 1492673
>>492658
e x t e r n
x
t
e
r
n
26 1492674
>>492658
ой бля, прости анон, только сейчас до конца дочитал
image.png381 Кб, 606x467
27 1492680
>>492674
Извиняю.
Извинения на двачах, кек
28 1492694
>>492680
В Чечне на каком стандарте сидят, интересно.
29 1492698
>>492694
На не имеющем аналогов.
30 1492699
>>492658
Хедер с интерфейсом или хотябы с функцией, возвращающей некий указатель, а имплеменатцию и сами глобальные переменные внутрь некого си файла.

Пользовался этим в С++, когда на С++14 сидели, экстерноговно не кушай
изображение.png136 Кб, 1366x768
31 1492702
Помгите, прошу. Какие настройки вам показать? Что не так? Почему все красное? Соре за paint. Он какого то хуя заис тут
32 1492703
>>492699
Нету у меня возможности использовать функцию - нет inline по стандарту, а компилятор дурной очень, не хрена не факт, что догадается разворачивать геттер.
И нет дизасм не хочу не буду смотреть

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

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

А что бы инклудить хидеры, ты должен указать где их искать, это делается обычно
Настройки проекта -> Include Directories или что то такое, там название и место в MVS из года в год меняется.
изображение.png142 Кб, 1366x768
33 1492704
>>492702
Я наконец то получил ошибку прямым текстом, скомпилив ранее работающий проект
34 1492705
>>492704
Хотя мне кажется что эта ошибка не имеет ничего общего с той. Короче ебаная вижуал студия. Я просто обновил ее
изображение.png197 Кб, 1366x768
35 1492706
>>492705
ПИзда
36 1492708
>>492705
Не хочу линукс, говорили они. Пердолинг, говорили они
37 1492712
>>492703

>нет 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;
}

--------------
За синтаксис не ручаюсь
38 1492714
>>492703

>нет inline по стандарту

39 1492717
>>492703

>нет inline по стандарту


Inline не инлайнит функции. Это ключевое слово позволяет делать так, чтобы компилятор не ругался на multiple declarations одной и той же функции при инклудинге хедера, когда эта функция описана в самом хедере.
Сам инлайн только на усмотрение компилятора. Более того, даже аттрибуты типа _____forceinline_____ уже давно игнорятся компиляторами, потому что их лепят где попало.
40 1492719
>>492658

>Вопрос в том, что правильный ли это вариант и единственный ли? Или я где-то туплю.


За именование модулей с большой буквы оторву яйца, виндоебок проклятый. Зачем тебе 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++;
}
изображение.png106 Кб, 1366x768
41 1492721
Держу в курсе
42 1492725
А правильно так.

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

Либо - в следующем посте
42 1492725
А правильно так.

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

Либо - в следующем посте
43 1492727
>>492721
В рот ебал все это. Тупо версия qt не выбирается. И ЭТО НА РАБОТАЮЩЕМ НЕДАВНО ПРОЕКТЕ
44 1492728
>>492727
win32 попробуй выбрать
45 1492731
>>492728
А может быть такое, что mscv 2017 а студия 2019?
46 1492733
>>492731
Всмысле у меня так и есть. Может ли ошибка поэтому быть?
47 1492734
>>492733
Может быть надо пересобрать qt, либо в msvc указать старый компилятор. ЗАТО НЕТ ПЕРДОЛИНГА
48 1492737
А за такое тебя сразу возьмут мидлом.

//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);};
}
48 1492737
А за такое тебя сразу возьмут мидлом.

//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);};
}
49 1492744
>>492731
может, в 2019 студии можно ставить тулчейны от 17 и 15, и собирать ЛЕГАСНЮ.
50 1492750
>>492744
Я честно говоря запутался. За что вообще отвечает msvc. Еще странно, что все работало на 19 версии, но после какого то обновления сломалось. Поможет ли, если я снесу все и заново установлю?
51 1492753
>>492706
Ты обновился с 2017 на 2019? Для 2019 нет предсобранного msvc компилятора в Qt. Ставь 2017 build tools через установщик/настройщик студии, тогда будет валидно.
52 1492755
>>492753
Я ебал. Спасибо
53 1492756
Там типа 141 build tools тебе надо. Вместо 142. Но тогда и проект должен быть для этой версии, старой, не апгрейдь.
54 1492757
Не апгрейдь проект в смысле до 2019, оставляй его в режиме 2017.
55 1492758
>>492755
Вообще нужно приучить себя не обновлять виндовые приложения сразу. У меня однажды сама винда полетела после своего же официального обновления
56 1492759
>>492750
я бы на твоем месте вообще не пользовался студийным тулчейном в твом случае. Накати mingw через QT инсталлер, и пользуйся им.

Ну или полноценно девелопи в студии с qt tools.
57 1492760
>>492759
Qt tools установлены
58 1492761
>>492717

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



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

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

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

>>492719
>>492725

>malloc


Out of memory лол

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

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

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

>//какой нахуй int здесь, поехавший


Опечатка же
58 1492761
>>492717

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



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

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

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

>>492719
>>492725

>malloc


Out of memory лол

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

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

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

>//какой нахуй int здесь, поехавший


Опечатка же
59 1492763
>>492761
В догонку, мне не нужна переменная в main, она мне нужна в других модулях, которые будут на основе этого.
И очень удобно иметь один ебучий хедер, который ты пихаешь куда надо.

Макароны? Безусловно, но лучше чем видимые везде, тут хотя бы видишь что используется.
60 1492766
>>492761

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


>Это разве нихуя не правильный подход?


Нормальный подход

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


>Оно на хуй не должно послать разве?


У меня дохуя опечаток, это одна из них
>>492763

>И очень удобно иметь один ебучий хедер, который ты пихаешь куда надо.


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

>И очень удобно иметь один ебучий хедер, который ты пихаешь куда надо.


Пока не окажется, что ты у тебя два шаговых двигателя вместо одного, а код весь жестко забит на глобальные переменные, и вот тут и начинаются макароны.
Впрочем, у меня задача была показать тебе разные способы, а не выбирать их за тебя.
61 1492773
>>492766

>была показать тебе разные способы


Я учел на будушее, спасибо.

>>492766

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


Но если h инклудится в c, где объявление переменной, получается.

extern int var;
int var;

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

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


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

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


Нет http://ideone.com/EUF2w6

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


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

>Нет


И в правду. Вот тебе и домыслы... тогда все понятно.
В этом месте вопрос и решается.

> все конкретно.


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

Или

>совсем хардкорного байтоебства


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

>статически контексты


Остальное так и сделано правда через жопу и все один хер жестко прибито, просто конкретно этот модуль - удобнее сделать так, т.к. она один из немногих нужен везде и часто, поэтому и вопрос по скорости.
64 1492800
>>492540
Компилировать все ссылающиеся на класс файлы vs компилировать только .cpp-файл.
Хм, что же выбрать?
asyncop2.png24 Кб, 377x413
65 1492809
https://www.boost.org/doc/libs/1_71_0/doc/html/boost_asio/overview/core/basics.html

Я не понимаю, run разблокировывается сразу после асинхронного вызова handler или всё-таки дожидается выполнения handler и только потом разблокировывается?
66 1492810
>>492809
сразу. По-этому его надо нонстопм дрочить на каждый чих
67 1492814
>>492442 (OP)
У меня есть лист и два итератора. Мне надо поменять местами значения на которые они указывают ( в листе), но если использовать swap, то итераторы инвалидируются. Надо это выполнить без инвалидации за О(1). Говорят, можно использовать как-то splice, но как?
68 1492823
>>492755
>>492753
Нахуя вообще пользоваться кутишным расширением? Сколько лет уже программирую, никто ни разу не сказал "вот это бля годное расширение, заебца". Почему нельзя просто™ скачать собранные бинарники и подключить их к проекту? От 17 студии подойдут к 19.
69 1492853
>>492814

>то итераторы инвалидируются.


С чего бы? Ты не итераторы меняешь, а значения, на которые они указывают.
70 1492917
>>492810
А если вместо передачи handler у меня yield[ec]? Т.е. переключение на корутину. Сначала выполнится корутина, а потом run разблокируется? По тестам вроде так, я ставил задержки внутри корутины и смотрел по логам в консоль, что вызовется первым: печать после задержки внутри корутины или печать после вызова run. Типа

boost::spawn(io_context, lambda); // внутри лямбды вызывается sleep и log
some_async_op(..., yield[ec]);
io_context.run();
log(...);
71 1492922
>>492761

>Я люблю в хедере описывать дефайны и тайпдефы, после чего инклудить их в



А я люблю в хедере описывать дефайны и тайпдефы, после чего инклудить их в
.с. Каждый день я хожу по проекту с хедером и собераю в него все дефайны которые вижу. На два полных файла целый день уходит. Зато, когда после тяжёлого дня я открываю main.c... ммм и сваливаю в нее свое сокровище. И запускаю компилятор представляя, что меня поглотил единый организм дефайны. Мне вообще кажется, что дефайны, умеют думать, у них есть свои семьи, города, чувства, не меняйте их на шаблоны, лучше приютите у себя, говорите с ними, ласкайте их…. А вчера в ванной, мне преснился чудный сон, как будто я нырнул в море, и оно прератилось в дефайны, рыбы, водоросли, медузы, все из дефайнов и тайпдефов, даже небо, даже Аллах!.
72 1492923
>>492917

> boost::spawn(io_context, lambda); // внутри лямбды вызывается sleep и log


перед sleep и log внутри лямбды есть yield, разумеется
73 1492946
Какое исключение выкидывать сеттеру при инвалидном аргументе?
74 1492973
>>492946
Я понял. Не отвечайте.
image.png5 Кб, 553x123
75 1492985
Насколько хороша идея сделать в библиотеке отдельный хэдер с дефайнами условий компиляции, где, например, можно будет отключить проверки аргументов и так далее.
76 1493055
>>492985
Этот отдельный хедер звали config.h
77 1493080
Хочу начать писать на с++, решил сделать 1й проект веб-апликейшен логер моего рабочего времени.
Погуглил как делать серваки, чаще всего предлагают писать свои сокеты/хендлеры с нуля.
Погуглил "готовые решения", нашел это https://github.com/etr/libhttpserver#introduction

Теперь сомневаюсь в своей затее, веб-сервера не особо популярны на плюсах?
Может кто-нибудь сможет подсказать как мне лучше начать в этом направлении писать?
взять писать без задней мысли прошу не советовать
78 1493091
>>493080
Обычно используют boost, но рискуешь охуеть от всяких фокусов. >>492809
image.png35 Кб, 1069x496
79 1493101
Стоит ли создавать свои собственные классы ошибок или же просто потерпеть и поиспользовать std::runtime_error?
80 1493102
>>493101
если у тебя разные обработчики для твоих ошибок - то да, иначе нет
81 1493200
>>493101
Почему бы и нет, но нахуя столько бойлерплейта
82 1493203
>>493080
Если в кьют умеешь то бери их сокеты, повторяй примеры из документации и всё. Если хттп сервак надо - на гитхабе пару либ готовых, qhttpserver например, эхо сервер в строчек 30. Но вообще да, серваки на плюсах не очень популярны судя по всему.
83 1493232
>>492444

> Почему все до сих пор пишут классы в С++, разделяя хэдер и реализацию?


Это удобнее и понятнее.
84 1493250
>>492523
То есть просто обертка?
85 1493251
86 1493282
Надо считать символ char. std::cin >> c; Как проверить, чтобы был введен именно символстрочной, заглавный цифра, а не строка или несколько цифр?
87 1493314
Как стать таким же умным, как этот челик?
88 1493326
>>493314
Да тоже пизди всякие модные слова без перерыва, и все будут охуевать и думать "как стать таким же умным, как ты"
89 1493329
>>493314

>не отличать ум от эрудиции


Тебе – никак.
90 1493345
>>493314
че за дрыщ ебаной, у нас таких на заводе мужики байтоебы пиздят с ноги
91 1493361
>>493314
Прсрись на форумах пару лет, почитай срачи. Будешь рожать подобное борщехлебное дерьмо тоннами.
92 1493363
>>493314

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


>запретить


Идите на хуй со своими запретами, авторитарные макаки.
93 1493365
>>493282
Серьезно, помогите. Попробоваль сразу после ввода вставить проверку if(std::cin.failbit) так она при любом вводе срабатывает .
94 1493374
>>493365
Хотя тут понял, где обосрался.
Но все же как выдавать ошибку, если на ввод подается больше 1 символа не ясно.
95 1493375
>>493365
Читать строку целиком (getline) и потом проверять, что она из одного символа и т д.
96 1493401
>>493282
Если у тебя есть conio.h, то можно getch() - она в принципе не даст больше одного символа ввести.

>строчной, заглавный цифра


isalnum()
97 1493509
>>493314
Лучше не быть таким. И думать в первую очередь, как сделать без шаблонов.
98 1493546
В каких конкретных случаях создание ссылки продлевает жизнь объекта? Вот это работает например, висящей ссылки не будет. Сказать, что я охуел — ничего не сказать.
const auto &ref = create_some_rvalue();
99 1493549
>>493546
Мы вам перезвоним
100 1493553
>>493549
Дружок-пирожок, клуб безработных педиков парой тредов выше. Я трудоустроенный высокотестостероновый натурал.
101 1493557
>>493546
всегда, до конца скоупа.

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

const int& func()
{
const int& var2 = something();
return var2; // висяк
}
102 1493597
Пацаны, что такого сделали в 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]?
103 1493600
>>493597

> using T = T


Так точно никогда нельзя было делать. Быть может, ты конкретизируешь вопрос?
104 1493608
>>493600
Так, собственно, конкретизировать и нечего по сути. Был древний код как в примерах, при попытке собрать новой студией с /std:c++17 вылазят ошибки номер хуй C2386 во втором случае и что-то вроде unknown identifier в первом
105 1493610
Нахуя хвастаться скоростью, если всё равно все пользуются умными указателями а не сырыми? Нахуя вызывать деструктор по типу указателя, если ясно что память помечёт? Нахуя вводить лямбды если с безопасностью пиздец? Что за уёбище получилось в итоге? И почему им до сих пор пользуются?
106 1493611
>>493610
Тебе в тред программистов на реакте
107 1493616
>>493611

>пук


Никто и не ожидал, что у зашореных цппшников найдутся оправдания уёбищности этого говна. Но ты хотя бы мог отправить меня в раст-тред. Из этого треда _всех_ нужно отправлять в раст-тред. А ещё лучше попросить Абу сделать редирект
108 1493617
Как передавать нажатия по рабочему столу в реальном времени? Написал вот такой кусок кода, по задумке это что-то вроде рабочего стола, только в отдельном окне, то есть я нажимаю на папку - она открывается и так далее. Как я понимаю проблема в том, что в виндовс не может быть активно более 1 окна, есть какие-то способы обхода или реализация в целом хуйня, куда тогда стоит копать?
109 1493622
>>493610
Я всем говорю, что инженером работаю. Тянки боятся, память течёт. Если бы на джс писал, то было бы стыдно смотреть в зеркало по утрам.
110 1493624
>>493622

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


корчил бы в зеркало ахегао и складывал бы руки в кошачьи лапки
111 1493630
>>493616
попроси, зачем срать то пришел. Насрать себе в штаны можешь
112 1493639
>>493610

>Нахуя хвастаться скоростью, если всё равно все пользуются умными указателями а не сырыми


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

>Нахуя вызывать деструктор по типу указателя, если ясно что память помечёт


Что

>Нахуя вводить лямбды если с безопасностью пиздец


Хотя бы чтобы делать parallel_for без плясок с бубном

>Что за уёбище получилось в итоге


Сказал растоебок, у которого язык уже сравним по уебщиности, хотя ему 10 лет всего.
>>493616
В оппосте есть ссылка "вместо шапки". Зайти туда. Найди параграф "памятка ньюфагу". Прочитай 5-й пункт.
113 1493698
>>493639

>Сказал растоебок


С чего ты взял? Я на с++ уже 5 лет. До этого на Сишке и ObjC. И что бы вы думали? Несмотря на смартпойнтеры позавчера поймал сигфолт. Дело в том что с++ это механизм из говна, смазанный поносом. И если есть возможность пресекать хотя бы часть фейлов на этапе компиляции, то это просто космические технологии по сравнению с с++
114 1493701
>>493698

> Несмотря на смартпойнтеры позавчера поймал сигфолт


> с++ это механизм из говна


Механизм из говна тут не c++
115 1493782
Есть метод(см. первую пикчу). У него по дефолту значение параметра

> std::function<void(GLFWwindow✡, int, int)>


равняется функции со второго пика.
Также внутри первого метода есть вызов функции glfwSetFramebufferSizeCallback, которая принимает в качестве аргумента указатель на функцию вида

> void(GLFWwindow✡, int, int) То есть у меня std::function на нее ориентирован


Но почему-то, когда я передаю функции glfwSetFramebufferSizeCallback ссылку на std::function ее вида, то все нормально. Как такое вышло?
116 1493788
Байтоёбы есть ?
117 1493792
>>493788
На месте.
118 1493811
Может кто посоветовать хороших книг(желательно на русском) по c++17 или сайтов с задачками, а то основы изучены а задач для практики пока немного.
120 1493822
>>493814
Я бы на твоем месте извинился.
121 1493823
>>493811
Страуструп, ЯП C++ 2 издание
image.png1,1 Мб, 594x824
122 1493828
>>493823

>Страуструп


Как можно советовать такое дерьмо, когда есть пикрелейтед?
123 1493833
>>493828
Анон, эта книга для настоящих профессионалов, не пали годноту быдлу.
124 1493926
>>493698
Ты худший вид растоебков - которые еще и на расте не пишут.
125 1494009
>>493926
Нет, просто я ценю своё время и отвечаю за качество продукта
126 1494052
Встретил задачку send + more = money, решил написать программу решающую это говно. Но не получается. Точнее выходит неэффективное говно, которое тратит на решение больше 2 минут. Вот оно https://ideone.com/QCroGi
Как сделать заебись? Чувствую себя умственно отсталым.
127 1494094
>>493617
Бампну вопрос, может есть какой-то способ сделать 2 окна активными?
128 1494107
>>494052
Кек, решил в уме минут за 6, похоже брутфорс эффективнее :)
В алгоритм не вникал, но можешь попробовать вместо map использовать std::array<int, 128>
129 1494232
>>494052
>>494107
Брутфорсы разные бывают. Для ускорения перебора нужно как можно раньше понять, что мы идём не туда и игнорировать эту ветку.
Например в этой задаче можно поддерживать множество "занятых" цифр, а также идти с конца и смотреть подходящие варианты по последней цифре.

http://ideone.com/TocGUa
Закодил вашу хуйню за час где-то. В школе занимался олимпиадами, но за прошедшие 8-10 лет деградировал до уровня двачей
130 1494246
Пытаюсь вкатится в кресты. Хочу написать функцию, которая читает любую переменную и возвращает ее значение. Логика подсказывает, что я могу написать скажем 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 минут, до этого писал на питоне и похпе, поэтому вопросы наверное максимально глупые
131 1494248
Сегодня я познал, почему c++ далеко не везде топовый язык.
132 1494256
>>494246

> cin<<s;


лол

Просто во втором случае конпелятор не может вычислить тип Т.
Пиши s = read<string>();
133 1494258
>>494256
Ну я же говорю, только 20 минут как начал. Почему то в Википедии такие простые штуки при работе с шаблонами не объясняются, но скорее всего я просто в глаза ебусь привыкнув к пхп.
Cin устарел, да?
sage 134 1494259
>>494248
расскажи нам

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

Читай в строку, и дальше парси сам, вариантов немного
135 1494260
>>494258
>>494256
А, перенапрвление вывода не в ту сторону, точно.
136 1494261
>>494258
Просто взять и писать на плюсах нельзя, возьми почитай Прату, сделай примеры, а потом вернись к своей хуйне. Это тебе не питон, тут даже хеллоуворд может не компилироваться.
137 1494276
>>494248
Тоже начал учить волшебный js?
138 1494287
>>494246
Ну да, динамический петушок не может в статическую типизацию.
139 1494292
>>494287
Я задал вопрос и получил на него ответ, но спасибо за жалкую попытку самоутверждения, было забавно
140 1494294
>>494276
>>494259
Я вот подумал, что вам будет не очень интересно, поскольку я школьник, но сегодня писал олимпиаду и почувствовал разницу в скорости написания кода на питоне и плюсах. Мне также показалось что плюсы тяжелее читать. Как же обидно когда алгоритм в голове составил, а записать нормалтно не можешь
141 1494298
>>494294
Нихуя себе откровения, на языке тс динамической типизацией и высоком уровне абстракции из коробки писать проще! Охвау
142 1494301
>>494298
А как научиться переносить мысли из головы в код как можно точнее? Где задачи на эту тему взять? Потому что я такую хуйню написал что пиздец
143 1494324
>>492800
это же какая-то ебонутость сиплюсов.
можно же (не пердоля ничего остальное даже) препроцесором генерировать отдельный файл имплементации для методов, которые не нужно инлайнить, и конпелировать всё по-нормальному, а в процессе написания держать все в хедерах, чтобы не ебать мозги несколькими файлами, иметь комменты для функций рядом с кодом, не ебать себя повторением хедеров функций в двух местах, не ебать себя переключением между хедером и имплементацией. все нормальные текстовые редакторы поддерживают сворачивание кода, поэтому "загленул в хедер сразу все увидел" не аргумент.

ухожу на раст.
144 1494333
Есть какой-то резон учить/переходить на Qt Quick, если мне норм с Qt Widgets?
145 1494339
>>494324
Не возвращайся только потом
146 1494355
>>494339

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


Приятно видеть, что кто-то еще не потерял веру в людей.
147 1494407
>>492547
Бамп вопросу.
148 1494412
>>494407
Во многих языках есть модули. Не нужно отдельно писать интерфейс и реализацию, достаточно скомпилировать модуль, а затем его импортировать в своей программе. Ничего никуда не инклудится, всё компилится по отдельности. Хорошо это или плохо, думай сам.
149 1494434
>>494412
Ну да, пожалуй удобно.
150 1494445
>>493597

>Алсо, почему теперь нельзя написать [code]using T = T[/code]?


Внутри MyBase? Потому что https://timsong-cpp.github.io/cppwp/n4659/temp.local#6:

> A template-parameter shall not be redeclared within its scope (including nested scopes).

151 1494446
>>493546

>В каких конкретных случаях создание ссылки продлевает жизнь объекта?


В ньюфаг-тред, шагом марш.
152 1494531
>>494445
Спасибо. Кажется, нашёл статью, где они это "починили"
https://blogs.msdn.microsoft.com/vcblog/2017/09/11/two-phase-name-lookup-support-comes-to-msvc/
153 1494693
Как отправить нажатие мышки с активного окна на неактивный рабочий стол?
154 1494918
Анончики, помощь нужна. Есть у меня двусвязный список, в виде класса. Надо его отфильтровать и вернуть новый список, не трогая старый. Можете описать алгоритм, как это сделать? Я совсем извращаться начал, написал метод, который выдает массив из элементов списка, прошедших фильтрацию и в другой функции вставляю элементы массива в новый список и возвращаю его. В итоге, исходный список почему-то заменяется новым.
155 1494955
Я не понимаю, объясните.
Создаю файл заголовка и в нем описываю класс. В классе есть один метод.
Создаю файл с кодом, в нем описываю метод.
Все ок.
Создаю класс. Обращаюсь к методу. Вижу ошибку "неопределенная ссылка к 'методнейм' " (undefined reference to 'classname::methodname')
Переношу определение метода в файл заголовка - все работает.
Что за хуйня?
156 1494959
>>493326
Ты просто макакен-ооп-плюсовик. Я все из написанного понял и в целом согласен
157 1494962
>>494918
Дцп-макакен пытается понять иммутабнльность, но не получается
158 1494964
>>494918
Лаба что ли? Идешь циклом по списку и делаешь push_back в новый список элементам, удовлетворяющим условию.
Если не лаба, то чем тебя стл не устравивает.
159 1494971
>>494964
если не лаба - то как программист он явно неоче
160 1494976
>>494964
Да, лаба.
>>494962
>>494971
Чё сразу макака?
161 1495009
Как реализовать уведомления об обновлениях в чате? Клиент по какому-то каналу должен раз в n [промежуток времени] опрашивать сервер о новых обновлениях? Нельзя какое-то подобие сигналов в Qt реализовать?
162 1495016
>>494918
Копируешь список и фильтруешь его.
163 1495041
>>495016
Куда копировать? Список - это же не массив, там данные рандомно в памяти расположены и связаны указателями.
164 1495049
>>495009
гугли poll\select
165 1495052
>>495049
Да я уже загуглил. Вопрос еще один: http сервер не хранит состояние, мне нужно передать юзеру адрес второго сервера, который будет посылать уведомления об обновах, а юзер будет их с мейн сервера забирать?
166 1495071
>>494955
ты не компилируешь имплементацию класса. нужно делать
g++ main.cpp bdsm.cpp
167 1495072
>>495071
ну или там не линкуеш её че там еще в плюсах.
у кого-нибудь шишка зачешется выебнуться и меня обязательно поправят.
168 1495094
>>495041
Копируешь каждый элемент списка и связываешь их в том же порядке.

>Куда


Выдели память в куче и туда и копируй, что ты как маленький.
169 1495100
>>494955
Используй вижуал студию, будет думать за тебя
170 1495105
>>494531

>Кажется, нашёл статью, где они это "починили"


Там запрет переопределения параметра шаблона в планах на будущее

> 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.

15272794447840.jpg137 Кб, 500x429
171 1495292
Посоветуйте книги по Winapi, думал начать с Рихтера, но не староват будет?
172 1495305
>>495292

>Посоветуйте книги по Winapi


Книги по винапи у нас дома есть.

Книги по винапи дома:
https://xcb.freedesktop.org/tutorial/
173 1495322
>>495292
Зачем по винапи писать книги? На MSDN и так все расписано с примерами. Если хочешь углубиться в архитектуру оси, то читай Windows Internals 7 часть, 1 книга уже вышла, вторая будет после нового года.
174 1495343
эстэдэ::стринг строчка;
эстэдэ::син >> строчка;
эстэдэ::каут << строчка;
15667900104490.jpg406 Кб, 875x1250
175 1495356
>>494232
Пиздец анон, не могу понять как работает твой код
176 1495358
>>495343

>каут


сиаут
15598299648160.jpg180 Кб, 1037x584
177 1495361
>>495356
Хотя понял
15668708040330.jpg608 Кб, 1060x1500
178 1495366
>>494232
Сколько ты зарабатываешь, анон?
1570277077808.png72 Кб, 386x361
179 1495381
>>495358
сяут
15674199303240.jpg919 Кб, 1080x1080
180 1495436
Почему на си++ ещё кто-то пишет, если для всего низкоуровневого используется си, так как его стандартная либа легче и сам язык ближе к ассемблеру, а для крупных коммерческих энтерпрайз проектов удобнее использовать си шарп?
181 1495455
>>495436
Никто на нем не пишет, в этих итт тредах мы просто траллим нюфагов.
Если ты не заметил, то все пришедшие с лабами на якобы с++ в разделе реально используют из крестов только ввод/вывод, остальное все - чистейший си.
182 1495494
>>495436
Двачую, за растом будущее
183 1495536
>>495436
Попробуй что-нибудь большое написать на си. (Или просто разобраться в кодовой базе FFmpeg)
Все ФП веруны, что обсирают ООП (и в особенности крестовый недоООП), просто не пробовали что-то большое делать на чисто процедурном языке.

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

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

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

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

ИМО, не обоссывайте.
184 1495542
>>495536
мой первый в жизни пет проект был игрой на си
я тогда понял что структуры рулят лол
185 1495551
>>495542
typedef Xynta struct XyntaStruct*;
или в наглую?
186 1495554
>>495551

> typedef Xynta struct XyntaStruct;


То есть
typedef struct XyntaStruct
Xynta;
187 1495556
>>495554
Сука. За что /code выпилили? Это же как суп ножом есть.
188 1495560
>>495554
еще хуже (я так и не выучил толком си так что думаю что еще хуже)
в основном
typedef struct {.....} xynta
только линкед лист делал структурой
typedef struct node {.....} node
189 1495565
>>495436
Везде, где требуется высокая производительность, используются плюсы. На нем пишут движки браузеров, виртуальные машины и т.д.
Инкапсуляция делает код более читабельным, есть шаблоны, которые иногда упрощают жизнь, есть защита от дурака в виде модификаторов доступа, всякие удобные штуки вроде перегрузки операторов, референсы и т.д.
>>495536

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


C++ очень часто используют без RTTI, ибо оверхед, это недо-ООП и скорее ближе к процедурному программированию с синтаксическим сахаром в виде инкапсуляции, чем к тру-ООП.
190 1495578
>>495560
Понял. Я имел в виду, прятал (инкапсулировал) ли ты детали реализации структуры в сурс файле, или нет.

>>495565

> C++ очень часто используют без RTTI, ибо оверхед, это недо-ООП и скорее ближе к процедурному программированию с синтаксическим сахаром в виде инкапсуляции, чем к тру-ООП.


Йеп. Но чистая сишка ещё страшнее, не?
И зачем нужет RTTI? Нужно просто сделать хорошую архитектуру, с чёткими интерфейсами и прочим.
191 1495599
>>495578

>И зачем нужет RTTI?


Чтобы работали виртуальные методы. Без виртуальных методов нет полиморфизма, а без полиморфизма нет ООП. Без RTTI C++ это процедурный язык.

>Но чистая сишка ещё страшнее, не?


Да, поэтому C++ и используют.
192 1495610
>>495599
Это был сарказм, btw.
V-тэйблы же работают без RTTI? Или я что-то путаю?
Имеется в виду вообще весь механизм, или же доступная программисту часть?

Если что, всё моё понимание RTTI составлено из вот этой статьи в википедии и опыта работы с самописной динамической идентификацией типов в одной компании.
https://ru.wikipedia.org/wiki/Динамическая_идентификация_типа_данных
193 1495617
>>492442 (OP)
Знакомый забашлял бабла в GeekBrains и пошел туда на курсы, в конце там еще и сертификат дают. Насколько хороша эта тема? Профит будет?
194 1495624
>>495617
Конечно будет. Ложное чувство получения знаний и поднятие морального духа. А мог бы просто книжку прочитать
195 1495628
>>495624
Так есть хоть какой-то профит от подобных курсов при трудоустройстве? сам планирую пойти Сертификат роль сыграет?
196 1495632
>>495628

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


>C++


Нет, это скорее минус.
197 1495633
>>495628
Сомневаюсь что это решающую роль сыграет. Как на собеседовании себя покажешь, такой и будет результат, это максимум небольшой плюс будет. Всё-таки это не MIT какой-то, а отчесественная хуйня для выкачивания денег.
198 1495652
>>495610
V-тейблы это и есть RTTI.
199 1495656
>>495652
RTTI это же про typeid и dynamic_cast. Виртуальные таблицы и без них спокойно работают.
Мимопроходил
200 1495709
>>495656
Погуглил сейчас, да, ты прав.
201 1495721
>>493610
использование умных указателей (из стандарта) вообще не влияет на скорость выполнения по сравнению с сырыми, есть небольшие затраты на память и все
202 1495728
>>493610
лямбды в с++ - это просто синтаксический сахарок в языке, в случае когда нужно на один раз передать callable сущьность, те чтобы не писать функторы и обычные функции для одноразового применения
203 1495729
>>495721

> умных указателей


> т.е. и shared тоже


А как же тот такт процессора на refcount?
А? А?!
204 1495736
>>495729
шаред в 99% не нужен. Юник - бесплатный
205 1495743
>>495736
Херасе.
Я пытаюсь по умолчанию везде пихать юник, а потом мне всё равно приходиться переделывать на шаред.

Могу сказать наоборот: в 99% юник не нужен.
206 1495769
>>495743
А мог бы просто передавать по значению и не ебать себе мозг.
207 1495779
>>495769
Постоянная необходимость в Big 5 и вероятность object slicing'а дружно смеются мне тебе в лицо.
208 1495782
>>495743
Что-то у тебя с графом владения не то.
209 1495787
>>494918
напиши "свободную" функцию фильтрации которая принимает список который нужно отфильтровать, условия фильтрации, а возвращает новый список, в котором будут отфильтрованные элементы
210 1495796
>>495743
Попробуй дизайнить механизмы владения получше. Или, вообще хотя-бы пытаться думать, что у тебя и чем должно владеть.

Пихать всюду шаредпоинтеры, потому-что ты не знаешь, как у тебя что и где - это нихуевый такой антипаттерн и code smell
211 1495800
>>495743
Мда, за километр видно, что у тебя память течет в проекте. В расте твой говнокод даже не скомпилился бы и ты бы рыдал как побитая шлюха над ошибками борроу чекера, размазывая сопли по щекам.

>>495779
Сука, до сих пор блевать тянет от rule of five, особенно после раста, где от этой хуйни сознательно отказались и конструкторы простые как слеза младенца.
212 1495801
>>495796
>>495782
Ок. Не то чтобы я был старше джуна и мог бы кому-то всё испортить, но всё равно полезно свой косяк увидеть.
213 1495802
>>495779
Ты просто не умеешь готовить value семантику
214 1495803
>>495536
кстати, ffmpeg всегда приводят в пример того, что архитектура этого проекта требует ооп-методик (в частности как динамического, так и статического полиморфизма)
но он написан на си, и в этом проекте, по сути, возможности ооп эмулируются средствами си
215 1495807
>>495565

>тру-ООП


Это какое такое? То, где все заканчивается срачем на тему "как я выбирал свой любимый паттерн из GoF?"
216 1495817
>>495807

>>тру-ООП


>Это какое такое?


Конечно же такое, как анал кэй придумал.
217 1495831
>>495617
если хочешь учится за деньги (на русском языке) - то 4 курса по с++ на курсере от яндекса оптимальный выбор на данный момент
218 1495976
>>495807
Да забей, я долбоеб с лабами.
219 1496479
Как вкатиться в boost?
220 1496492
>>496479
Буст это набор библиотек под разные задачи, а не одна библиотека.
221 1496590
>>496479
А тебе зачем? Там много такого, что тебе уже не пригодится, потому что уже есть в стандарте. Читай примеры по интересующим библиотекам, типа gil, hana, geometry
222 1496830
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, хз почему и как фиксить, хелп
223 1496831
>>496830
Всё, проблема решилась - CLion помещает сборки в отдельную папку
224 1496843
>>496830

>const char temp[11] = {'i', 'n', 'p', 'u', 't', char(i + 48), '.', 't', 'x', 't'};


'\0' ?
225 1496845
>>496843
при такой инициализации все, что не указано, будет zero initialized, включая, собстно, последний элемент
226 1496853
Qt, Winforms, WPF, UWP
На чём лучше сегодня писать GUI?
227 1496862
>>496853
Лучше сделать вебапп на питоне который тягает твою либу на крестах. А так зависит от задачи. Qt самый универсальный вариант, но для венды можно подумать
228 1496873
>>496862

>Лучше сделать вебапп на питоне


Чем лучше?
229 1496885
>>496873
Юниксвей - просто, композабельно, доступно с кучи клиентов
Даже архитектура твоей либы будет скорее всего продуманней стандартного button1click
230 1496895
>>496853
Qtquick
231 1496930
>>495721
Шаред не бесплатный и вообще хуита, ногу отстреливает. Юник заебись, везде юзаю, брат жив.
232 1496933
>>496930
Если грамотно использовать шаред (а именно - не тягать счетчик ссылок постоянно), то он почти бесплатный и не хуже юника.
А так 90% случаев покрывает банальный std::vector, а еще 9% - другие контейнеры. Не так уж указатели в современном С++ нужны.
233 1496941
>>496933
если грамотно использовать юник, шаред вообще не нужен
15295108737570.jpg19 Кб, 480x325
234 1496959
>>494009

>я отвечаю за качество продукта


>написал крашащуюся хуету – это не я, это язык!! Язык говно просто!

235 1496973
а ну расскажи за умные указатели...
Короче, есть умный указатель shared_ptr<Data> data;

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

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

Как? weak_ptr? меня просто задолбало в гугле что про weak_ptr все как попугаи тявкают про перекрестные ссылки, вместо нормальных вещей. Не понимаю (да, я дурачок)
236 1496981
>>496973
Что происходит с data при копировании класса? От этого зависит ответ
237 1496985
>>496981
при копировании класса все mdata этих классов должны указывать на data (но да, эти классы тоже не должны увеличивать счетчик data, и если data обнулился, то все mdata тоже должны обнулиться)

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

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

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

Ну и короче в Foo нужен такой умный указатель, который не увеличивает счетчик ссылок. а в случае когда класс удаляется, обнуляет свой указатель
238 1496992
>>496985
Адреса указателей - наше всё.
Си-с-классами-блядок
239 1496993
гребанные указатели... как заставить это работать
std::weak_ptr<Type> t;
typedef void(Type::Func)(Args ...);

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

не работает, выкидывает ошибку на *f
image.png30 Кб, 713x533
240 1496995
>>496993
мля, какой дебильный парсер двача. да еще и пастебин сдох

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

выдает ошибку, нельзя указатель на функцию (я не ебу зачем и почему - делал по гуглу)
241 1497013
>>496985
Если не ошибаюсь, такая схема тебе подойдет.
http://ideone.com/KZpEyP
242 1497021
>>497013
а оператор копирования разве не затрет указатель Data() при yoba.mdata = data.mdata;?
243 1497024
>>497021
На этой строчке копируется shared_ptr с увеличением счетчика
244 1497025
Ключевой момент тут в двойной косвенности. Есть некоторая коробка, на которую указывают йобы, а вот коробка уже указывает на data. Data при своей деструкции обнуляет коробку, и тогда йобы знают, что они указывают на нуль.
IMG20191015093018684.jpg109 Кб, 1280x719
245 1497048
Как фиксить?
246 1497049
>>497024
но вообще у меня вроде получилось и через weak_ptr...

Хотя вот интересно, а weak_ptr::lock слишком тяжелая операция,
247 1497054
>>497049
По-моему код сweak ptr упадёт после удаления shared ptr.
248 1497066
>>497054
хм, надо посмотреть
249 1497085
>>497049
Поищи скрытый конструктор shared_ptr на хабре
250 1497096
>>496959
Если есть способы минимизировать риски, то глупо ими не пользоваться
251 1497153
>>495729
ну смотри: если ты не используешь sharep пойнтер, то тебе самому надо будет делать подсчет ссылок руками, те по затратам на скорость исполнения все равно так же будет
252 1497171
>>497153
Можно написать сборщик мусора
253 1497174
Ку, мне препод предлагает иследовательскую работу в анрил энжине с vr. Я в курсе про блюпринт, но с таким знанием меня потом нахер пошлют, собственно сабж, че читать что-бы начать разбираться? Опыт есть с юнити, но не с vr.
254 1497175
>>496973
дык и используй weak_ptr
в чем проблема?
или ты не понимаешь механизма его работы?
вкратце, он не проверяется на "нулевость", а становится невалидным
а чтобы с ним поработать, нужно получить из него shared_ptr, и, если он не валидный, то этого не получится сделать..
так с ним и работают..
у тебя типичная задача для weak_ptr, только, подозреваю, ты не понимаешь как с ним работать..
255 1497187
https://dev.to/fenbf/how-a-weakptr-might-prevent-full-memory-cleanup-of-managed-object-i0i
Короче weak ptr использовать можно, но без make_shared, иначе смысл теряется
256 1497200
Сап. Хочу с использованием boost::program_options сделать чтобы
./a.out --option 1 2 --option 2 -3 --option -3 +4 (тут именно через пробелы)
возвращало
std::vector<std::pait<int, int>>
Можно ли это сделать без большой ебли, или проще передавать значения в виде --option 1:2 и руками разбивать и разбирать?
257 1497206
>>497174

>иследовательскую работу в анрил энжине


Это как это вообще?
Будешь открывать доселе невиданные возможности УЕЧ?
при том, что сам в нем не бум-бум, лол

Российское образование, такое российское...
258 1497226
>>497206
Я предполагаю исследование для самого себя
259 1497227
>>497206
И все-таки есть что-то посоветовать?
260 1497360
Котаны, хочу писать сетевое ПО на плюсах, в плюсах не полный новичок.
Какую либу для сокетов-хуёкитов посоветуете? Я писал беркли сокеты на Си, но они несовместимы с виндой (да, я линуксоид).
И вообще, как плюсы для сетевого программирования? Или лучше другой язык юзать?
P.S.: пиздон слишком медленный для этого, имхо, поэтому не предлагать.
261 1497371
>>497360
Вроде как то можно писать на Беркли в винде с помощью костылей, но я не уверен.
А так у винды свои сокеты, их и гугли.
1535434878624-0.jpg63 Кб, 680x641
262 1497403
Пытаюсь в будущие. Есть пул сепуляторов. Я могу вернуть future<сепулька> сейчас, а назначить конкретный сепулятор делать эту сепульку позже с помощью bind или еще чего-нибудь?
263 1497411
>>497360
boost.beast, boost.asio, QtNetwork проще всего, для http - C++ REST SDK от мелкомягких. Первые два низкоуровневые, на них писать не очень приятно, кьют я лично использую я студент мне нравится, если кьют освоишь то вообще заебись будет, последний не использовал, но рекомендовали сеньоры-помидоры в чатах, говорят мол заебись.
264 1497417
>>492442 (OP)
Уснул на работе после обеда. Всем похуй.
С вами такое бывало?
265 1497424
>>497360
poco библиотеку ещё можешь чекнуть.
266 1497426
>>497403
Отвечая на свой вопрос: тривиально, оказывается.
267 1497427
268 1497431
>>497417
Не один раз. Задача сложная?
269 1497496
>>497360
Винсок - калька с беркли
270 1497513
>>497431

>Задача сложная?


Нет, задачи интересные, это мой недосып виноват.
На самом деле я очень рад, что смог найти работу с гибким графиком и хорошим коллективом.
271 1497603
Сап, двощ
Только без рофлов, какие возможности трудоустройства есть в 2к19, зная плюсы?
Что пишут, что НЕ пишут? Сетевые приложения пишут на плюсах? Заранее спс
272 1497604
>>497603
пишут дохуя всего, включая сетевые приложения. Если ты прям хочешь вкатиться в плюсы - задрочи алгоритмы и иди в яндекс. Ну или научись сосать хуй и иди в мейлру. Потом перекатишься в нормальное место
273 1497612
>>497174

> че читать что-бы начать разбираться?


Открой демки УЕ4 и по ним разбирайся. Куча материалов и демок в инете, гугли. В блюпринтах ничего сложного нет, кроме того, что вместо 10 строчек кода, ты лепишь мышкой паука на два экрана. Это простой скриптовый язык с ООП. ВР приложения от обычных фактически ничем не отличаются. То есть ты можешь любое анриловское приложение запустить в ВР режиме, и оно сразу заработает. Самому придется только работу с контроллерами делать. С 99% вероятности С++ тебе не понадобится - почти все делается блюпринтами. С крестами там тоже ничего сложного, кроме того, что у них там свой препроцессор и своя система сборки на шарпе, в результате чего все очень неспешно компилируется.
Самый большой гемморой будет, если вы нацелитесь на мобильные устройства вроде Oculus Go/Quest. Там мало того, что сам анрил для мобилок не очень припособлен (куча ограничений, куча багов годами висят), так еще и пидоры из фейсбука могут сломать API в любой момент, так что все снова заработает только в следующей версии УЕ4. Самсунг так вообще поддержку дропнул для своих очков. Теперь чтобы с ними работать, надо какие-то древние версии анрила качать. Короче, лучше не связывайся с мобилками или приготовься тушить жопу регулярно.
274 1497617
>>497206

>Российское образование, такое российское...


Сейчас, бум всей этой ВР поеботы в образовании. Не только в РФ, на западе тоже. С игрушками все умерло, а университеты, наоборот, грантов набрали и лепят все подряд в ВР.
275 1497631
>>497617
шо поделаешь
технология есть, а человеческий организм не принимает..
некоторые люди блюют после сеанса vr в шлеме, у многих болит голова, болят глаза..
по итогу в продакшон это худо проталкивается, остается только допиливать гранты в вузах
1.png29 Кб, 587x615
276 1497634
>>497603
Чтобы быть крестомакакой в 2019 и получать синьёрские 75к, тебе придется выучить qt+boost, уметь пилилить фронт на реакте и бэк на голанге. Такие дела.
277 1497642
>>497631
Это все дело привычки, причём недолгой. Основная проблема вр это хуевое железо и софт. Потому что аджайлоебы не могут в хардваре
image.png130 Кб, 854x658
278 1497648
>>497634
Бля, где вы такие вакансии находите вообще. Глянул что в моём городе по мидлам-сеньорам, вот первое что попалось, вполне адекватные требования и зарплата в 3к, что для моей страны практически равнозначно богу, который может позволить всё.
279 1497651
>>497634
ты же понимаешь, что это вакансия работает в 2 случаях:

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

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

// мимо жава макака
280 1497654
>>497634
Алсо

>язык Qt

281 1497658
>>497654
А что не так? Qt - это язык, транслирующийся в С++ программой moc.
282 1497661
>>497651

>2) какой-то старый пердун, который уже впринципе не можем/хочет ничего нового учить


Хотел бы я посмотреть на фуллстак старого пердуна на реакте и голанге.
283 1497662
>>497661
если реально нужен с++ - то возьмут и старого пердуна, который только с++ и знает. в придачу к нему поставят студента-зумерка
284 1497663
>>497662
старые пердуны не знают С++, они умеют месить сиговно только
285 1497673
>>497662
студента зачем? чтобы веки как вию поднимал?
286 1497685
а забористая у меня сегодня трава

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

(это еще черновое, там надо сделать защиту на случай если класс FooBla будет уничтожен (помечено todo) и скрыть уродство Connect
288 1497693
>>497685
Переделывай. Я должен сам типы параметров функций дописывать? Почему нет поддержки типа возврата?
289 1497696
>>497693

>>Я должен сам типы параметров функций дописывать?


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

>>Почему нет поддержки типа возврата?


Если там будет стопятсотслушателей, то как ты их отследишь?

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

Код сейчас переложу, там решена проблема с мертвыми указателями, да и выглядит получше
290 1497697
>>497696
Зачем ты переизобретаешь std::function?
291 1497698
>>497696
Компилер знает, что функция Resize = void(uint32, uint32). Дальше думай.
292 1497702
>>497697
затем что:
- а) std::function очень тяжелый и тормозной (про это где-то в гугле была статья, с бенчмарками)
- б) std::bind все равно также и выглядит
- в) не обрабатывает ситуацию, когда класс метода будет уничтожен
- г) все равно нужно делать обертку
- д) не по феншую
- е) чтобы нет?
293 1497703
>>497698
в каком хоть направлении думать?

что если у меня там будет KeyDown(Key, bool, bool)? В
294 1497705
>>497702
Гугли function_ref.

>>497703
decltype
295 1497706
>>497702
Понятно, стандартное ко-ко-ко велосипедостроителя про дикий оверхед стандартной библиотеки, при чем на самом деле велосипедостроитель не знает и не понимает нихуя, но уже бежит делать свою имплементацию.
Ты сначала досканально изучи, как оно работает, изучи, где именно он тормозит и почему, и, возможно, ты захочешь сделать свой вариант под твою задачу. Но скорее всего не захочешь.
А та хуйня, которой ты занимаешься, нихуя хорошего в плане профессионального развития тебе не принесет.
296 1497707
>>497705
а можно подробнее, я плохо владею шаблономагией,
и самое главное, что мне это даст, а то не совсем понятно зачем мне вот такие сотни строк
https://github.com/TartanLlama/function_ref/blob/master/include/tl/function_ref.hpp

когда у меня все это в одну строку typedef
297 1497708
>>497706
https://probablydance.com/2013/01/13/a-faster-implementation-of-stdfunction/

Я на эту, как ты выразился, херню потрачу всего день, так что я ничего не теряю.
298 1497709
обновил код
https://ideone.com/wseHBU

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

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

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

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


А лучше бы бабу нашел. Потому что вместо всей этой хуйни с дрочем на пост пятилетней давности можно было бы набрать аж 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

И пойти отдыхать. А если и учиться, то учиться правильным практикам, а не своей поебистике.
301 1497716
>>497712
Я кстати ахуел сколько там часов лекций выложили. Как все это смотреть?
image.png25 Кб, 897x289
302 1497719
>>497706
вообще даже не так.. не совсем понимаю наезда. Во-первых я не против STD (там вон даже std::list есть если что)

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

Мой код написан конкретно под мою задачу - обработка событий от разных систем.
303 1497722
>>497712
если там про std::function_ref - то он разве принят? у меня его в компиляторе нет.

А если самому писать - то как я написал выше - я пока не осилил шаблономагию завезенную С++11/С++14/С++17
304 1497724
>>497719

>Мой код написан конкретно под мою задачу - обработка событий от разных систем.


Твой код написан велосипедостроителем, хуево знающим С++. И вместо изучения С++ (например, как написать свой std::function), он страдает хуйней.
image.png17 Кб, 456x197
305 1497725
>>497719
Хз, как по мне пикрил удобней. Уверен что можно еще больше упростить код, ибо я сам не маг.
306 1497726
>>497725
а теперь добавь еще трех слушателей
307 1497728
>>497724
Еще раз, зачем мне писать свой std::function?

короче, давай так - ты знаешь что такое signal and slot? Ладно, даю подсказку, он основан на observer. Даю вторую подсказку - в некоторых реализациях можно использовать внутри std::function.
даю третью подсказку - я не обертку над функциями делаю, а систему обработки событий которая должна обрабатывать неизвестные события.
308 1497729
>>497725
и знаешь в чем еще проблема конкретно твоего пикрила, вот у тебя будет класс Input в котором будет твоя function... А потом ты захочешь добавить FooB2. И? Полезешь изменять Input чтобы написать новый Prototype? это как бы нарушение инкапсуляции, и ведет к лапше.
image.png71 Кб, 624x656
309 1497730
>>497726
Ну хезе.
310 1497732
>>497724

>хуево знающим С++


- а ты возьми и объясни.
image.png8 Кб, 381x89
311 1497735
>>497729
Вот еще так можно.
image.png55 Кб, 781x805
312 1497736
>>497730
ошибка, зачем ты создаешь несколько Signal, если он должен быть ровно один?
313 1497737
>>497735
твои примеры, они просто про обертку над методом. Это вообще не то.

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

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

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

std::function не является решением, это всего лишь инструмент через который такую задачу можно решить. Всё равно придется писать обертку потому что:
- подписчики могут уничтожаться в любое время, их срок жизни никак не связан со сроком жизни системы генерирующей события.
- нужно хранить не одну функцию, а массив - то есть должны быть механизмы добавления, удаления и обхода
- а там где-то еще многопоточность бегает - там свои сложности
- всё это еще и не должно выбиваться из общего кодестайла, так что обертка 100% будет
- если плевать на кодестайл, то не стоит плевать на проблемы STD и DLL (кто-нибудь помнит почему в DLL интерфейсах нельзя std::string а надо char*? это из той же оперы). так что всё равно обертка.
314 1497738
>>497710
>>497724
>>497735
Короче, хватит на пальцах. Раз вы не хотите знать что такое паттерн singal and slot, то я вам покажу, почему std::function - это ни разу не оно

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

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

Я вообще решаю другую задачу, так что... странно меня обвинять в страдании хуйней, если вы даже не поняли задачу которую я решаю.
315 1497739
>>497738
Так ты объяснять не умеешь. Никто и не говорил, что это одно и тоже. Посоветовали использовать std::function, все остальное ты сам надумал, еще и обижаешься на нашу помощь.
316 1497742
>>497739
ну я не вижу решение через std::function, которое было бы проще и эффективней:
- за функцию у меня отвечают две строчки которые на самом деле одна (typedef) - для этого мне не надо тянуть довольно тяжелые заголовки.
По какой причине (кроме религиозной) имеет смысл одну строку кода заменять на тяжелый заголовок?

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

- и всё равно нужно было делать решение для ситуации когда слушатель убивается раньше обработки события.
317 1497759
>>497742

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


Неправда. У тебя класс должен имплементировать интерфейс EventResizeEventListener, и это является самой большой проблемой кода. Типичное ООП в стиле 90-х: для простой задачи с простой семантикой наворачивается какая-то ебанутая иерархия классов. Алло, я хочу просто подписаться на событие, нахуя мне этот АбстрактПроксиСинглетовЭвентРисайзЭвентЛистенер и 10005000 других классов такого плана.

А на самом деле для механизма коллбэков достаточно std::function, который делает type erasure, и тогда подписываться сможет кто угодно, даже не класс вообще, лишь бы была нужна сигнатура.
Что касается "удаления листенера из списка подписок в деструкторе", то нет листенера (а есть std::function) - нет проблем. Проблема надумана.
318 1497818
>>497759
как ты подпишешься на событие, если у разных событий разные типы и количество аргументов?

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

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


Это на абстрактных единорогах,

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

или ты предлагаешь писать на функциях а данные перекидывать через глобальные переменные? или как?
319 1497819
>>497759
давай по другому
вот тебе список ивентов
keyboardHandler
mouseHandler
touchHandler
gamepadHandler
windowHandler
systemHandler
uiHandler
animationHandler
soundHandler
updateHandler

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

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

Через ООП конечно же. Ведь те, кто должны реагировать на события - это не под типы, у них своя логика, свои члены, свои методы
320 1497821
ооп-ненавистник прокрался в тред.
>>497759
опять парадигма говно в жопу заливает?
Тебе в этой иерархии не надо ковыряться, а просто переопределить метод.
321 1497828
>>497821
>>497819
>>497818
Сёма, кого ты пытаешься наебать?
322 1497851
Сап, аноны. Мне нужно выполнять код, использующий библиотеки кьюта при обращении к хосту по определенному порту. Как лучше это реализовать - написать программу, которая будет запущена в фоновом режиме и какимто образом слушать этот порт, или есть возможность с помощью оси (шиндоуз) выполнять код на хосте при обращении на порт?
323 1497861
>>497828
Чини детектор, пруфов не будет
324 1497871
>>496993
Если что, у weak_ptr нет оператора разыменования, т.к. перед использованием содержимого его надо обязательно проверить на существование.
Надо делать так:
auto ptr = t.lock();
И если ptr не nullptr, то к нему уже обращаться как к указателю
325 1497907
⚾️⚽️☻☻‍⚕️‍
326 1497986
>>497759
ладно, переделал
https://ideone.com/7SS1k6

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

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

перегружать теперь ничего не надо
327 1498014
Сап двощь,
Нужна помощь от посвященных в плюсы
Как сделать, фоновое приложение, которое активируется при зажатии указанной кнопки, с меня как всегда
328 1498015
>>497986

>weak_ptr


Есть же unique_ptr
329 1498030
>>497612
Спасибо, а если не секрет, опыт разработки был? есть что-то из кулстори?
330 1498040
>>497612

>Blueprint ничем не отличается от крестов


Нахуй из профессии
https://youtu.be/V707r4bkJOY
331 1498063
>>496959
Язык такое неговно, что без нужно юзать санитайзеры.
НЕ ГОВНО СЛЫШИТЕ, НЕ ГОВНО
332 1498071
>>498063

>не может в нормальный код


ЯЗЫК ГОВНО В ЖОПУ ЗАЛИВАЕТ АРРРЯЯЯЯЯ
333 1498091

>valgrind


>AddressSanitizer/ThreadSanitizer/MemorySanitizer


>PVS-Studio, cppcheck, cpplint, coverity


>Из Rust в данный пиздят фичу lifetime analysis


>Все большие компании юзают статический анализ и санитайзеры


ВЫ ВСЕ ПРОСТО НЕ МОЖЕТЕ В НОРМАЛЬНЫЙ КОД А Я МОГУ

Сектант, плиз
334 1498092
Аноны, хочу попробовать перекатиться в дс2 работать. Чё там у зарплат крестовиков-синьоров, в своей дыре получаю 90к, на какую сумму вообще претендовать, уровень жизни и за разный.
335 1498104
>>498040
А как это работает? Я думал там все эти блюпринты компилятор превращает в те же самые бинари, как если бы ты на плюсах писал и это просто фронт-енд для них.

Мимо другой
336 1498113
>>497907
блядь абу ебаный уебок какова хуя ебучие футбольные эмоджи работают но не нормальные
337 1498115
>>498104
но не гарантирует, что сгенерированный из блюпринтов код будет таким же, как если бы ты реализовал ту же функциональность, написав всё руками. хотя и руками ты можешь написать еботу, которая работает хуже блупринта.
338 1498196
для какой практической задачи ты пытаешься сделать систему обработки событий, основанную на сигналах и слотах?
339 1498207
>>498196
Очевидно изобретает кют.
340 1498212
>>497986
Я вот смотрю и нихуя не понимаю, в чем смысл? При как обстоятельствах у меня будет несколько разных классов с одинаковыми методами и почему я им должен слать сигнал? Я лучше вектор из каллбеков запилю.
341 1498226
>>498040

>Blueprint ничем не отличается от крестов


Где я это сказал?
342 1498229
>>498030

>опыт разработки был? есть что-то из кулстори?


Периодически приходится делать простые демки в VR. Народ такое любит заказывать: походить по помещению, потыкать в интерактивные подсказки, посмотреть анимации простенькие. Анрил для этого очень удобен - все быстро накидывается мышкой, а в ВР хорошо чувствуется масштаб, особенно у всяких гигантских йоб вроде танкеров и ракет. Кулстори нет особенных.
343 1498234
>>492694
Гораздо интереснее на какой сажают.
344 1498250
>>497200
Бамп
345 1498336
>>498212
ты не понимаешь сам паттерн signal and slot?

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

И все эти кнопки должны реагировать на события... Конечно это все может делать и виджет мастер, но в таком случае нарушаются принципы ООП - в таком случае мастеру придется знать о своих элементах слишком много... А что если нужно добавлять новые элементы со своей логикой? Этот путь - это путь антипаттернов - гудобжекта и спагеттикода.
(впрочем так тоже делают - нет же единого решения задачи)
346 1498341
>>498336
Нет такого паттерна, это абстракция придуманная QT дебилами.
347 1498349
>>498336

>ты не понимаешь сам паттерн signal and slot?


Я изучил вопрос и все, что нарыл, это то, что сигналы-слоты удобны тем, что позволяют пробрасывать ООП-сообщения между тредами. Если у тебя однотредная реализация, она ничем не лучше вектора коллбэков по функциональности. Можно написать пару шаблонных функций уровня "добавить коллбэк в вектор колбэков" и "пройтись по вектору коллбэков и вызвать каждого колобка", но не более того.
А вообще эта хуйня появилась когда в крестах не было лямбд.
348 1498354
>>498341
observer/listener? это все из одной области.

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

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

И вроде как их изобрели чтобы в С++ завести событийно-ориентированное программирование о котором вроде уже и забыли
349 1498356
>>498341
и кстати в .NET это близко делегатам
Screenshot2019-10-1704-58-39.png10 Кб, 722x521
350 1498358
>>498354
Эх, зумерки, для которых 2001 год - это ниибаца древность.
В 2001 году я в kdevelop изучал Qt, который к тому времени был уже довольно старым. Вот тебе пруф наличия там сигналов и слотов аж в 1998 году. Раньше не могу - https://download.qt.io/archive/qt/1/ на этой странице нихуя раньше нет.
351 1498361
>>498349
ну ты не про то. при чем тут лямбды? Во-первых, мы пишем в ООП, то есть никаких глобальных функций.

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

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

Одна из задач сигналов и слотов - уметь отключать мертвые классы.
352 1498362
>>498358
да какая разница?

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

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

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

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

Как?
354 1498365
>>498364
if (std::is_base_of<IClass, T>())
355 1498369
>>498365
а в compile-time можно? чтобы не компилировалось
356 1498370
>>498369
А зачем там вообще шаблон, можно же просто
foo(IClass& t)
358 1498415
>>498369
static_assert(std::is_base_of_v<...>)
359 1498491
>>498415
А ты приколист.
360 1498537
>>498491
И что же такого прикольного здесь?
361 1498556
>>498537
На самом деле ничего, это я слепой даун.
Прости, друг, я невнимательно прочёл сообщение анона, на которое ты ответил - почему-то показалось, что ему нужен рантайм-еррор, а не компайлтайм.
362 1498600
A a;
B b;
a+ b; - ошибка, хотя в A определено преобразование в B
operator B() {
return B(x,y);
}
363 1498624
>>498600
А оператор сложения B определён?
364 1498644
>>498624
Да. b + b норм работает. a + 3 тоже, так как определил преобразование в int
365 1498649
>>498644
Хотя если поменять местами слагаемые то всё работает. Странно
366 1498658
>>498649
Точнее если сделать так
static_cast<B>(a) + b;
А вообще вот код https://ideone.com/cj2jDo
367 1498659
>>498649
Значит ты определил сложение только в одном классе.
368 1498662
>>492444
У вас нет потому что public private protected ахахах
369 1498664
>>498659
Определил в обеих, не помогло.
370 1498665
>>498658
Класс A не знает, как ему складываться с B. Либо определи сложение в обоих классах, либо вне классов.
371 1498669
>>498658
У тебя для A не перегружен operator+(B). Либо перегружай, либо делай как здоровый человек operator+(A, B) и operator+(B,A) и не ебись с implicit conversion
372 1498674
>>498665
Не понял тебя. Зачем ему это знать, если я определил для класса A преобразование в B? Да и даже если я в А вставлю это
A& operator+(A& d){
x+=d.x;
y+=d.y;
return *this;
}
Ничего не поменяется
373 1498677
В прочем я понял, результат преобразования rvalue, из за этого все проблемы.
374 1498686
Я не сишник, но у нас препод очень не советует делать
using namespace std;
Почему? Чем лучше постоянно писать std::(нейм) ?
Спрашиваю просто из интереса, я лабы все равно на другом яп пишу.
375 1498687
>>498674

>Зачем ему это знать, если я определил для класса A преобразование в B?


А откуда ему знать, что ему надо преобразоваться в B?

И кстати, не надо возвращать у сложение B&, ты же не собираешься писать что-то вроде
b + a = 3
376 1498698
>>498686
Захламляет твоё пространство имён. Чтобы не возникало двусмысленности, если у тебя в коде будут функции с теми же именами.
377 1498703
>>498687
Так будет же лишнее копирование.
378 1498709
>>498703
Вообще, я даже не обратил внимания, что у тебя за странный способ сложения? a + b и так должно создавать новый объект, который ты будешь использовать в выражении, типа a = a + b. А у тебя оно с какой-то стати объект изменяет. Тебе надо было перегрузить оператор += для этого.

Вот так должно быть https://ideone.com/JRcjjp
379 1498747
>>498686
Потому что у вас лабы, и кроме лаб препод ничего не делал. В большом проекте using будет, но будет сидеть только там, где он действительно нужен - внутри класса, функции или вообще блока кода, и не лезть наружу. Это касается не только std, а любых псевдонимов классов и неймспейсов.
380 1498750
>>498747
этот прав

Печать аппрувала сениора из нвидии
381 1498773
>>498750
Как же ты заебал вниманиеблядствовать
382 1498789
>>498773
Чем я хуже кошкомальчика?
383 1498797
>>498747
Ты так говоришь, будто во всех проектах чуть-чуть больше лабы возникает проблема двусмысленности имен.
Даже в очень большом проекте двусмысленности может не возникнуть. А может возникнуть, хуй его знает, проблема как раз в том, что пиздец подкрадывается как всегда незаметно, и ты бежишь с горящей сракой менять все pizda на std::pizda.
15700155417070.png181 Кб, 535x466
384 1498802
Как убрать окно из отрисовки? Есть приложение, которое берет пиксели с хендела рабочего стола, то есть само приложение тоже в нём отображается, хочу убрать его с отрисовки, будто его и нет.
PtlPT9OGWw.jpg68 Кб, 662x663
385 1498805
>>498361

>никаких глобальных функций


БЕРЁШ ГЛОБАЛЬНУЮ ФУНКЦИЮ
@
ЗАВОРАЧИВАЕШ В НЕЙМСПЕЙС
@
ГОТОВО, ТЕПЕРЬ НАША ПРОГРАММА НАПИСАНА В СТИЛЕ ООП
386 1498829
>>498356
Как раз делегат ближе к std::function.
387 1498835
>>498361

> Во-первых, мы пишем в ООП, то есть никаких глобальных функций


Ебать дебил. Посмотри последний цппкон. Там популярно объясняют, что глобальные функции нужны, и напоминают, что С++ не тоталитарная ООП помойка.
388 1499008
>>498802
ShowWindow и SW_HIDE?
389 1499014
>>498747

>В большом проекте using будет внутри класса


Using namespace внутри класса нельзя же.
390 1499015
>>498797

> А может возникнуть, хуй его знает


Поэтому лучше не использовать using namespace в хидерах. Так оно протечет по всему проекту. Если использовать только в cpp, то будет гораздо проще исправить столкновение имен только в одном файле.
391 1499017
>>498835
угу, страуструп всегда писал что не надо перегружать интерфейс класса, а вместо этого, по возможности, делать свободные функции-помощьники рядом с классом, объединяя это все в одну сущньность посредством пространств имен
1985848965487332556.png237 Кб, 699x462
392 1499033
>>499008
Я не хочу скрывать само окно, оно показывает мой рабочий стол, я хочу чтобы оно не показывалось. Прикреплю скрин, чтобы было понятнее, хочу чтобы окно вовсе не показывало себя. Могу сделать чёрный фон SetWindowDisplayAffinity(hWnd, WDA_MONITOR), но это не то, чего я хочу.
393 1499036
>>499033
Ну передай своему окну hide перед скриншотом и разверни позже, раз уж не получается никак.
Но вообще 3 минуты гугла подсказали, что bitblt может тебе помочь.
394 1499037
>>499036
Оно делает не 1 скриншот, а непрерывную серию (видео) в реальном времени.
395 1499063
есть лямбда функция
auto a = [](int g){return g*g;}
как поместить ее в контейнер map, который хранит пары строка - std::function<int>?
396 1499120
Анон, я давно (12лет) погромирую бекэнд на C#/F#/JS/TS/Python, хочу вкатиться в плюсы (задачи - хоббийный ардуино-ARM/ESP-ембеддед, интероп/FFI с языками выше для работы, в дальнейшем - сетевые числодробилки в сфере трейдинга, тоже для работы).

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

Нашел на scanlibs пикрил 2019 года, описываются фичи в т.ч. 17 стандарта. Как думаешь, подойдет в качестве экспресс-курса, если дополнить практикой с leetcode/codewars/etc?
397 1499147
>>499120

>Там в основном книги 200x годов, а стандарт 2011 вроде внес серьезные изменения


Да не особо они серьезные. Основные принципы не поменялись, просто стало чуть проще их применять. Читай библиографию Мейерса целиком. Если же прямо совсем лень, читай

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md
398 1499150
>>499147

> Да не особо они серьезные.


Да нет, как раз таки очень серьезные.
399 1499158
>>499150
Только для тех, кто был в анабиозе в 2003 года.
Половина фич это перетащенный в стандартную либу буст, вторая половина - синтаксический сахарок.
Разве что лямбды реально повлияли на стиль, но это тоже сахар.
400 1499160
>>499158
Только вот в учебниках никакого буста нет. В итоге прочтет книгу по старому стандарту, откроет код, а там лямбды, перемещение, вывод типов, умные указатели и тд
401 1499161
>>498797

>менять все pizda на std::pizda


Ебанатство какое-то. Почему нельзя новые pizda использовать как neo::pizda?
Это получается стандартную библиотеку нельзя по-человечески юзать, а всяким левым хуйням можно, лол.
402 1499163
>>499160
Он переживает не о том, что там чего-то нет, а то, что там что-то неверное что потребуется потом забыть. А это не так.
А то что ты упомянул есть в том Мейерсе про который он писал и посчитал что базы не хватает.
403 1499164
>>498686
В cpp файле делай что хочешь. А вот делать так в хедере это блядство, потому что ты поломаешь код, который тебя заинклудил.
404 1499168
Что можно почитать/посмотреть о Qt с нуля, т.е. чтобы с самых основ все идеи заложенные в него пояснялись на примерах? Просто до этого на нем писал как еблан - брал гуй, а логику писал чуть ли не на простых плюсах, какая-то хуйня получается, по сути путь в никуда. Можно даже на английском, если какая-то годнота.
405 1499177
>>499168
Макса Шлее наверни
407 1499220
>>499161
Можно и так, но потом кто-нибудь въебет using namespace neo; и все пойдет по пизде. А вообще >>499015 прав, using namespace std; в сурсах вполне ок решение.
>>499168
Меня забавляют байтоебы, на каждом углу кричащие, что они настоящие программисты, а не какие то веб макаки, а потом идут писать десктоп, который не сильно далеко от уеба ушел по сложности задач.
Ничего не имею против тебя, плюсов или кьюти, я и сам в какой то мере байтоеб, просто вспомнил забавное наблюдение.
408 1499229
>>499220
все таки QT десктоп, это кардинально иной уровень сложности, чем вебговно, как не крути. Но тем не менее, если бы я писал гуй - я бы его точно писать не крестах.
409 1499233
>>499229

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


Где там сложность? Раскидал по форме элементы, написал обработчики событий -- все нахуй.
Разве что только если гуй -- это всего лишь фронтэнд к какой-то пиздец сложной логике вроде какого-нибудь компилятора или виртуальной машины, но пиздец сложную логику и в вебе можно придумать. У вас похоже представления о вебе прямиком из 90-х, когда пых использовали для счетчика посетителей на хоумпейдж.
410 1499272
>>499233

> если гуй -- это всего лишь фронтэнд к какой-то пиздец сложной логике


Приведи пример где это не так? У меня вообще большинство десктоп приложений это обёртка над терминалом, чтобы кнопочки тыкать можно было. А веб говно потому-что там макаки вообще хуй положили на оптимизации и теперь какие-то одностраничные лендинги весят по 50мб и кушают по 1гб памяти, в десктопе на крестах по крайней мере я такой хуйни не замечал.
411 1499302
>>499177
Прям годнота? Я в 16 году начинал читать актуальное на тот момент издание, но по какой-то причине дропнул. Ок, попробую, спасибо.
412 1499321
>>499219
Неужели чтобы такое реализовать на ассемблере потребовалось бы такое огромное количество строк кода?
413 1499327
>>499321
ну мапа то - дохуя сложный контейнер
414 1499335
>>499302
Шлее о многих аспектах не рассказывает, или говорит вскользь. В целом для ознакомления заебись, считай прочитаешь ее за неделю, поделаешь примеры из нее, а дальше нужно будет садиться и писать что-то самому. У кьюта огромный плюс - охуенная документация, доступная прямо из иде, с примерами и описанием каждой функции. Как почувствуешь готовность - можешь почитать как там мок устроен, нахуя ты эти странные макросы вставляешь куда попало и почему функциям-сигналам не нужна реализация. Хотя да, кьют часто ругают и не зря, хотя и в вакансиях я его вижу относительно часто. Лично мне как студентоте было заебись написать что-то полезное, а не дрочить байты и лабы в С с классами.
415 1499341
>>499335

> У кьюта огромный плюс - охуенная документация,


Хочу рассказать, что я делал два примера по "документации" и они нихуя не работали, поскольку в самом доке пропускали части кода, приходилось еще и сорсы примера открывать. Неудобно.
Но ты не про примеры говоришь. А сама документация как референс да, неплохая.
416 1499342
>>499341
Ну не знаю, я код модели для тривьюхи практически полностью себе в проект впихал, и работало заебись, разве что немного модифицировал под свою задачу. Не помню такого, что код прямо не работал, разве что действительно там где-то пропускают часть кода для упрощения.
417 1499357
>>499229
QT - хуйня для вебмакак, нормальные люди пишут на winapi
418 1499373
>>499357

>нормальные люди пишут на winapi


да ладно
если сейчас хочешь писать для развлечения (а натив под винду для заработка уже не попишешь, нет работы), то гораздо интересней писать uwp приложение
winrt - замечательно спроектированная нативная библиотека
419 1499374
>>499373

>(а натив под винду для заработка уже не попишешь, нет работы)


геймдев
420 1499380
>>499357
на винапи уже никто давно не пишет полноценные оконные приложения.
421 1499382
>>499168
отделяй гуй от реализации всегда
просто представь, что у твоей проги будет 2 интерфейса - командной строки и гуй
те пишешь сначала ядро, из него будет торчать открытый api интерфейс
422 1499389
>>499160

>а там лямбды,


лямбы вообще синтаксический сахарок, для того чтобы не писать свободные функции или функторы в случае когда они будут применяться на один раз..
423 1499391
kjk в чем смысл?
424 1499392
>>499160

> вывод типов


вывод типов вообще то в языке уже очень давно, как только появились шаблоны
вывод типов работал для шаблонов свободных функций и для функций-членов классов
соответственно и правила вывода типов уже тогда были и были хоть и сложными, но интуитивно понятными
и в новых стандартах эти правила во многом применимы и на вывод типа выражения (auto, deltype и прочее), те ничего особенно нового..
425 1499399
>>499160

>умные указатели


в стандарте 98 года уже был один умный указатель, а вообще на конец 90 уже были написаны книги, половина объема которых была посвящена теме умных указателей, например книга джеффа элджера "библиотека программиста с++" (неудачное название у книги, у александреску "современное проектирование на с++" тоже не очень удачное название было)
потом была уже методика raii, которая закрывала часть задач умных указателей
426 1499404
>>499160
и вообще, если крупно обобщить, то важнейшее семантическое изменение в языке - это появление механизма перемещения
в будущем (если язык не умрет) это сильно изменит подход к проектированию многих библиотек
427 1499406
>>499147
а я вот из тех, кто как раз прочитал все книги майерса (просто для развлечения)
и вот самой полезной и удачной у него считаю последнюю книгу, где он обсуждает тонкости стандартов с++11 и с++14
а предыдущие книги - это, блин, такая простота на данный момент что просто даже не знаю
428 1499409
>>499120
я бы тебе вообще не советовал изучать кресты, пиши (и зарабатывай) на том что ты знаешь
а для интереса продолжай грызть f#, он прикольный, языки ml-семейства вообще прекрасно подходят для развлечения
429 1499410
>>499063
не очень понятно зачем тебе для этого лямбды
достаточно именованой функции, и указателя на нее помещенного в мапу
430 1499464
>>499409
F# для развлечения я уже знаю, на работе втащить его в прод довольно сложно: в финансах все довольно консервативненько, еще и спецов на рынке мало. Я много дотнетчиков прособеседовал (ок 50 за последний год), у нескольких в резюме был F#, и знаний у всех меньше, чем у меня. Да что там говорить, даже питониста толкового х найдешь, те что меньше 200 просят нихрена не знают, а остальные как будто в ai/ml или гошку укатились

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

А деньги мне больше не от языков программирования приходят, а от болтовни, сроков и результатов моей команды и порядка в джире. Тимлид же лул.
431 1499469
У меня 2 проблемы. Во первых почему gcount у меня всегда равен нулю(читаю строки гетлайном из файла), а во вторых почему tellg не работает? Выдает рандомные числа не совсем рандомные на самом деле, они рандомно отличаются в пределах 10 от того что считает str.size()+2
432 1499473
>>499464
не забивай себе башку еще и крестами
щас только книга по стандартной библиотеке - 1200 страниц, книга по шаблонам - 850 страниц, а там ничего особенного не написано, чисто вводные книги в тему
сам 17й стандарт - 1650 страниц, лол
нафиг тебе это надо
433 1499521
>>498092
Бумп.
434 1499527
>>498092
Жидбрейнс платит 200+
435 1499530
15358269748900.png248 Кб, 591x442
436 1499550
Приветствую. Кто-нибудь знает, почему assert(char(170) == int(170)) падает? ЯННП.
437 1499560
>>499550
Потому что char обычно знаковый -128:+127.
438 1499561
>>499550
Аналогично char(0b10101010) != 0b10101010
439 1499566
>>499560
Ты мудр, спасибо, чувак
440 1499602
Не нашел как мне усыпить программу на (60/(45*4)) секунд, работаю под линукс, нашел только sleep() но эта функция принимает только секунды, подскажите как сделать задержку.
441 1499605
>>499399

>в стандарте 98 года уже был один умный указатель


Это был плохой указатель и он ушел от нас.

>>499602
using namespace std::chrono_literals;
std::this_thread::sleep_for(20ms);
442 1499609
>>499602
usleep
ты гуглить не умеешь?
443 1499616
>>499063
Просто, без задней мысли.
444 1499618
>>499605
чтото у меня ошибок навалило
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'
445 1499624
>>499609
Он не работает, я пробовал.
446 1499625
447 1499627
>>499602
usleep принимает микро или наносекунды, не помню
448 1499672
>>499605

>Это был плохой указатель и он ушел от нас.


хех ты даже щас и не вспомнищ чем он был плох
он справлялся со своими задачами и все
449 1499682
>>499625
Мб он компилит ещё не под std=c++17
450 1499720
>>499672
Ну не то чтоб плох, но до введения семантики перемещения разрушающее присваивание выглядело пиздец как странно.
451 1500217
>>492523

>геттеры и сеттеры


>как нормальное ооп


Это же ублюдство пиздец,
В простой хуйне типа точки или вектора проще ебнуть структуру, а в каком-нибудь YobaCalculator вся логика должна быть заключена внутри объекта, чтобы тупо загнать через конструктор сеттинги какие-нибудь и дёргать его, как абстрактный черный ящик.
452 1500219
https://github.com/sosachbot/cppthreadhat/wiki#Тонкости-языка
Там ссылка стухла первая, есть у кого?
453 1500433
Задал вопрос в треде для ньюфаней, но продублирую и здесь.

Ребят, если интересна робототехника, а точнее программирование дронов и небольших роботов, ну и сюда же разработка их беспилотного режима, это какие языки? Питон и С++?
454 1500434
>>500219
http://gen.lib.rus.ec/ нормально открывается
если ты про вто
455 1500435
>>500434
рую ссылку, то тебе нужно открыть вторую ссылку и посмотреть на адрес бар, а затем зайти в первую ссылку и совершить поиск полученной на предыдущем шаге информации.
456 1500459
>>500433

>очнее


У нас в вузе такое чисто на питоне делали, мб там либы какие-то плюсовые есть уже, хуй знает.
457 1500463
>>500459
Спасибо
458 1500576
>>494246
http://www.cplusplus.com/reference/sstream/stringstream/
Можно извратиться используя стрингстримы. Это тоже самое как вывести переменную в стандартный выход, но ето типа стека. Т.е. загоняешь переменную в стринстрим, она им хавается и переваривается в строку, а потом высираешь это на экран.
Этой хуйнёй можно даже типы перегонять в друг друга через стринги. По ёбнутому конечно, но работаети.
459 1500616
>>500459
"сделать что-то на питоне" это означает написать кучу скриптов, вызывающих для работы сишный и крестовой код
460 1500692
>>500433 во первых тебе надо знать целевую архитектуру, например это АРМ, другим там пока не пахнет. Даташиты на камни. Электротехника. Энкодеры ололо, шины и прочая низкоуровневая хрень с байтоеблей.
Язык Си. Можно использовать С++ как Си с классами, просто для удобства. Но про STL забудь, у ембед систем памяти с гулькин хуй.
Если ты ещё не понял, самого кодирования в робототехнике не так много, как кажется, гораздо больше тебе понадобиться смежных знаний.
461 1500809
Как получать нажатия даже если мое окно свернуто? Хочу делать скриншот при нажатии принтскрина, то оно работает, только если мое окно активно. Есть методы получше глобал хука?
462 1500907
>>500692

> Но про STL забудь,


Есть же etlcpp и прочие

> у ембед систем памяти с гулькин хуй.


64-128кб уже достаточно доступные, чтоб об этом не переживать так сильно
463 1500961
>>500907
Если памяти чуть побольше - сразу вешаем на камень RTOS, чтобы не писать велосипеды.
464 1500969
>>500616

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


>


Какой язык такие и программы
465 1501004
>>500809
загуглить наверное я не знаю???? https://github.com/Skycoder42/QHotkey
466 1501011
Как отформатировать код в VS?
467 1501017
>>501011
Пиздец. Программирование - это не твоё.
468 1501018
>>501017
А по делу есть что сказать?
469 1501020
>>501018
Ты настолько туп, что в гугл не умеешь?
470 1501076
>>501004
Так я на Winapi пишу, нахуй мне QT
471 1501103
>>501076
Земля пухом тогда.
472 1501121
>>501020
Ctrl d и ctrl k не срабатывают.
473 1501122
>>501076
извини, у меня было ощущение, что ты сам не знаешь, на чем пишешь, поскольку ты даже не написал на чем. а че винапи не гуглится?
474 1501163
>>501122
Гуглил, там говорят кидать глобальный хук, я не хочу, потому что тогда приложение всегда будет требовать права администратора.
475 1501242
>>501163
Глянь как autohotkey и ditto сделаны.
476 1501246
Сап, аноны. В своей программе я работаю с "трехмерными" текстурами, некоторыми большими байтовыми массивами, внутри представленные как нересайзещейся вектор. И вот не вывозит по скорости код, создание такой и текстуры занимает много времени, ее обработка тоже. Есть какие-нибудь либы по обработке этого говна?
477 1501266
>>501246
Eigen?
478 1501310
>>501246

>внутри представленные как нересайзещейся вектор.


Почему не хотя бы std::array тогда?
Или вообще бустовский мультиаррай, там наверняка есть прокси классы для ускорения вычислений над многомерными массивами.
479 1501598
>>501246

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


ну дык поделай оптимизации, типа банального reserve, операции перемещения типа emplace_back вместо push_back и прочее

>ее обработка тоже


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

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

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

Что значит данная ошибка?
481 1501606
>>501598
Что-то мне подсказывает, ему для начала нужно с дебага на релиз переключиться
>>501603
Библиотеку нужно прилинковать
482 1501611
Я правильно понимаю, что все эти virtual, override, final сделаны сугубо для удобства читающего код?
483 1501612
>>501611
Если сделаешь override для не виртуального метода, то компилятор будет ругаться.
484 1501630
>>501611
override и final – для безопасности (типа как const, просто чтобы компилятор ошибку выдал если пытаешься сделать что-то не то). Ну а без virtual виртуальной функции не получится.
485 1501648
>>501606
g++ main.cpp -L /usr/local/lib/libaudiere.a
Вроде бы подключение библиотеки проходит так, но у меня все ровно вылетает ошибка
486 1501661
>>501611
хм, нет
virtual и final влияют на семантику
override - да, сделано для удобства чтения
487 1501662
>>501606
да, да
stl традиционно очень медленный на дебаге, скорость в некоторых местах может проседать на порядок
но возможно, в новых компиляторах это и не так
но раньше было точно
488 1501680
>>501648
Флаг -L задаёт путь к библиотекам, чтобы потом линковать их с помощью -l[название библиотеки без префикса lib и расширения .a]. Либо убери -L и оставь полный путь, либо напиши -L /usr/local/lib -laudiere
489 1501701
>>501680
/usr/local/lib у него все равно будет в путях
Алсо стоит заметить, что порядок важен и
g++ main.cpp -laudiere #работать будет
g++ -laudiere main.cpp #работать не будет
490 1501704
>>501598
Не нужно. STL никогда не подразумевала хорошую имплементацию 3д массивов, а vector<vector<vector<>>> это вообще худшее что может быть. Даже васяновелосипед на основе vector<> и маппинга из 3д в 1д будет сильно лучше работать
491 1501724
>>501662
-DITERATOR_DEBUG_LEVEL=0
И никаких проблем.
492 1501923
>>492475
Эх, помню я когда препод по программированию в универе посчитал передачу в функцию ссылку на указатель как каким то неимоверным предом, хехе, как же забавно сейчас вспоминать.
493 1501953
>>492480
Вектор нормально в функцию хуй передашь
494 1501957
>>501923

>передачу в функцию ссылку на указатель


очень подлая вещь, на самом то деле, поведение которой может удивить среднего разработчика
тк в этом случае не производится низводящих преобразований..
495 1501958
>>501953
по ссылочке, по универсальной ссылочке, которая обеспечит move-семантику..
никаких проблем..
разве что вообще дурной тон оперировать контейнерами, в функцию на обработку нужно передавать пары итераторов, указывающих на диапазон..
а если следовать идеологии stl то и такие функции не следует писать, а надо действовать через стандартные алгоритмы, те писать по сути в псевдо-функциональном стиле
496 1501959
>>492480

>Стоит юзать вектор или можно обойтись в принципе пацанским выделением динамического массива в проде? Какие подводные у обоих вариантов.


главный подводный камень - то что, задавая такие вопрсы, ты, по видимому, уже работаешь..
а это пиздец..
497 1501961
>>501959
судя по твоим ответам, ты не работаешь, и не скоро еще станешь
сперва, ведь, надо школу закончить
а там и армия, где ты будешь рассказывать, какой ты у мамы самый умный
498 1501973
>>501961
Дружочек, если у тебя в две тысячи девятнадцатом году возникает мысль "а не выделить мне немного памяти через new", то ты мудак и хуй его знает как прошёл испыталку. Или у вас в конторе все такие отбитые и код с new проходит CR?
5YLr5luv.width-1280.pngquality-80.jpegquality-80.jpg182 Кб, 1280x853
499 1501981
>>492442 (OP)
Подскажите, важно ли хорошо знать С, прежде чем преступать к С++, или будет достаточно пробежаться по подобному курсу https://www.youtube.com/playlist?list=PLRDzFCPr95fLjzcv6nNdjMu_9RcZgIM9U ?
Уже более-менее знаком с java и python, хочу перекатиться на плюсы
500 1502019
>>501981
Синтаксис тебе и так придется выучить (си практически подмножество цепепе). Лучше учи стандартную библиотеку плюсов, если понадобится, выучишь и стандартную библиотеку си.
501 1502060
>>501598
Задача такая: мне приходит массив данных, амплитуды, в двумерной сетке, и я по приходу сразу проверяю, что из этих данных принадлежит уже сформированным кластерам. Картинка похожа на долматинца, черные пятна (с резкой границей) на белом фоне. Так вот мы сканируем долматинца вдоль, и пробуем сразу объединить черные пятна - кластеры.
Кластер - вектор. Я создаю новый вектор с каким-то приблизительным размером и резервирую ещё половину.
По приходу нового измерения проходит поиск по всем формируемым пятнам. Пятно завершилось - уходит из формировалки.
Формируемые пятна хранятся в листе. Параллельности нету нихуя, все ебашится в одном потоке.
Задача вроде как телретически решается в матричном виде, и Eigen очень хорошо заходит с его-то бекэндом, и векторизуется по-хорошему все это говно, но надо как-то в матричном виде все записать.

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

>>501606

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


))))

Всем спасибо.
502 1502073
Может кто знает. Как сделать так чтобы в подсказке студии члены класса были первыми, а то заебался скролить весь тот срач что валится от сишной либы.
503 1502099
>>502060

>Картинка похожа на долматинца, черные пятна (с резкой границей) на белом фоне


Так тебе вот это нужно
https://docs.opencv.org/trunk/dd/d49/tutorial_py_contour_features.html
504 1502125
>>501957
Да, судя по тому какой фурор тут вызывает упоминание сырых указателей, соглашусь.
505 1502150
Хочется написать простенький мессенджер, сейчас пишу серверную часть на плюсах.
Подошёл к моменту когда нужно прикручивать бд.
Хотел обойтись без MySQL,заюзать что нибудь более легковесное и модное-молодежное.
Посмотрел в сторону redis, но насколько понял, это уж слишком что то простое, хранение и извлечение текстовых сообщений там будет неудобным.
Что можете порекомендовать? Mysqlite?
506 1502161
>>502150
ебаш сразу эластик, чтобы поиск было удобнее делать
507 1502166
>>501981
имхо, нужно как минимум прорешать K&R прежде чем браться за изучение крестов
но я сторонник последовательного изучения
508 1502171
>>502060
на проекте нельзя использовать сторонние опенсорс решения? если можно, то не пили велосипед, используй их
509 1502175
>>502171
opencv, tensorflow,, что то аналогичное, в общем
510 1502180
>>502150
персистентность каких данных нужно обеспечить?
511 1502195
>>502180
Текстовые сообщения , ассоциированные с пользователями их приславшими,с беседами в которых эти сообщения были отпралвены и метками времени -
чтобы к примеру для определенной беседы, в которой состоят Петя Ваня и Маша можно было удобно запросить сообщения за последний день, и дальше, если потребуется, или устроить поиск по истории сообщений к примеру.
Или неужто мне предложите это в оперативной памяти хранить?
512 1502198
>>502195
храни в файликах на диске
513 1502200
Хочу (пере)написать дерево (не бинарное). Что лучше выбрать - (уник) пойнтер на данные или наследовать нод и добавлять данные-члены в класс нода? Первая штука как-то красивее, а вторая штука позволяет брать данные без node->value->mydatamember, просто node->mydatamember. Пока что написал второе, но почему-то захотелось переписать.
514 1502206
>>502200

> (уник) пойнтер на данные


просто член с данными, пойнтер тут нахуй не нужен. в общем, выбор между хранением в ноде или класса с моей хуйней, или просто всю хуйню в сразу нод добавить.
фикс
515 1502216
>>502206
>>502200
А, даже переписывать ничего не надо. Просто наследовать и добавить член с данными и у меня два дерева на выбор.
Стикер512x512
516 1502230
>>502073
Помогите, уже устал от батхёрта.
517 1502263
Где кряк решарпера скачать можно? Схуяль он платный вообще? Хочу писать хеллоуворлды с комфортом.
518 1502267
>>502230
Купи vs2019 и поставь IntelliCode.
519 1502271
Ананасы, спрашиваю без подъёба и транслирую мнение, а не безоговорочное утверждение.
Нахуя учить плюсы в 2к19, если любая вакансия на плюсах == разгребание легаси-говна? В имбэддэде пишут на Си, в вебе совсем другой стэк технологий, там макакаскрипт с зоопарком фреймворков рулят отраслью, микросервисы и распределенные системы пишут на Го нынче.
Если ты не хочешь стать гейм-девелопером с релокейшеном в СШП (ибо в рашке ловить в этой отрасли нечего), то нахуй учить плюсы? Занимает это все дело годы, ибо это плюсы, а выхлоп никакой, 9 работ из 10 для плюсовика - разгребать легаси-дерьмо.
Поправьте, если неправ, так как это мнение, а не утверждение.
520 1502283
Есть два типа.
Первый отвечает требованиям StandartLayoutType, второй - нет.

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

Как написать универсальную функцию, либо шаблонную конструкцию выполняющую А для любого из этих типов?
521 1502284
>>502263
найди любого человека со студентческим билетом и на него оформи бесплатную лицуху сидел так 3 года, потом на работе купили

>>502271

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


Нет.

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


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

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


Да, но тебе никто не мешает устроиться на 10ую работу.
522 1502285
>>502283
if constexpr (is_standard_layout_type) { ... } else { ... }
523 1502302
>>502285
Нужно было решение для с++14, но по твоей наводке нашел enable_if, благодарю.
524 1502306
>>502284

>Нет.


Аргументировать можешь? Где сейчас плюсы незаменимы и широко используются? Про имбэддэд, вэб и всякие микросервисы я говорил - там С++ заменен давным-давно.
525 1502308
>>502284

> Нет


> Да, но тебе никто не мешает устроиться на 10ую работу.



Противоречишь сам себе. Сначала говоришь, что, якобы, не 9 работ из 10 на крестах - разгребание легаси-говна, а потом говоришь, мол, да, но никто не мешает найти 10ую работу. Шта? Определись
526 1502321
>>502308
Большая часть работ говно. Но оно и в вебе, и во всем на свете. Тебе никто не мешает прокачаться и выбирать реально интересные предложения, как сделал я.

>>502306

> Где сейчас плюсы незаменимы и широко используются?


Все системное программирование, алле. Весь high-performance. Бэкенд всех сервисов яндекса на крестах, например.
527 1502323
Почему S вызывается из производного, а Z из базового, разве она не должна переопределяться?
https://ideone.com/Sh0xc8
528 1502326
>>502284

> найди любого человека со студентческим билетом и на него оформи бесплатную лицуху


Где-то это я уже видел... По-моему ты мне и отвечал несколько тредов назад. У меня нет знакомых студентов.
529 1502327
>>502321

> Все системное программирование, алле.


Все системное программирование на Си, а не на плюсах, алло

> Весь high-performance


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

Если честно, мне страшно предположить что случится с Си и плюсами, когда тот же Раст выстрелит и пустит корни в хайтек.
530 1502329
>>502327

> Все системное программирование на Си


Ты хотел сказать, все легаси говно из 90 на Си. Никто на Си уже не пишет. Да, даже жопные контроллеры программируют на плюсах.

мимо
531 1502332
>>502327

> когда тот же Раст выстрелит


То есть никогда, лол.

Как вообще связаны корутины с мультитредингом? Это разные вещи. В бусте они тоже есть, если что.
532 1502338
>>502321

>Бэкенд всех сервисов яндекса на крестах


nop
533 1502345
>>502271
обычно студентиков в вузах учат на си писать (это когда идут курсы по алгоритмикам и все такое)
студентоз потом доучивает кресты
и все, человечек в ловушке, подсел на технологический стек
роботает потом за копеечки и все такое
534 1502348
Сап, плюсач.
Хочу на крестах пилить сетевые приложения (с возможным уклоном в последующую разработку сниффера и/или пакет инжектора, для портфолио, так сказать).
Есть два стула: QT Network и Boost.Asio. На какой сесть? В обоих чет не видел интерфейс для сырых сокетов. Что будет лучшим выбором?
535 1502349
>>502323
А хули ты хотел, она ж не виртуальная.
536 1502351
>>502271

>Нахуя учить плюсы в 2к19, если любая вакансия на плюсах == разгребание легаси


Чтобы разгребать легаси.
537 1502355
>>502345
вот я и говорю им, кому нахуй всрались сейчас плюсы? В их манямирке он нужен для перформанса, на деле в компаниях в 2к19 работает принцип "хуяк-хуяк и в продакшн". Софт говно порой выходит, базару нет, но это реалии айти на данный момент. Никто не будет нанимать плюсовика на бэкэнд, если его можно написать на ноде/го, где разработка будет х10 быстрее, без мемори ликов и тонны жопочасов отладки неведомой хуиты. Насчет роли плюсов в имбэддэде тоже очень сомневаюсь, там пишут на Си, напрямую дергая API ОС и не парятся, так как в имбэддэд разработке ООП вообще не нужно, ибо это байтоебство чистой воды, там тупо не нужны такие пласты абстракций. Плюсы в имбэддэд - это все равно, что из пушки по воробьям хуярить.
538 1502357
>>502348
не ломай себе жизнь, пиши подобный софт на Го. Потратишь во много раз меньше времени, сэкономишь нервы, не будешь получать сегфолты и утечки памяти направо и налево. Никто не использует плюсы для сетей в 2к19.
539 1502358
>>502355

> на ноде


Остановите эту обезумевшую студентоту.
540 1502364
>>502348

> в последующую разработку сниффера и/или пакет инжектора, для портфолио


Ебу дал? Ты хоть знаешь как это работает и реализуется? Драйвера писать умеешь?
541 1502365
>>502358
Только не говори ему, на чем написан рантайм ноды.
542 1502366
Пиздец, очередные мантры от первокуров. На С++ нигде не пишут, работы нет, пок-пок-пок, памагите с laba.cpp. Летом такой хуйни не было.
543 1502367
>>502364
Я на Си писал сниффер через сырые сокеты, в чем трабла. Да, это не второй уайршарк, но все же.
Умею, но только хэллоуворлдные
544 1502369
>>502367

>уайршарк


Блядь, нахуя вы это делаете? Тебе раскладку переключить выйдет быстрее чем нам прочесть эту хуйню.
545 1502370
>>502364
libtins
546 1502372
>>502327

>Все системное программирование на Си, а не на плюсах, алло


Дедуль, щас не 90ые
547 1502378
>>502372
Зашел сейчас в репозиторий ядра линукса на гитхабе: C 96.5% , C++ 1.3%. Плюс слышал, что майкрософт когда то пытались перенести ядро своей ос на с++ и ооп подход и обосрались, потеряв много денег, ядро до сих пор на си. Торвальдс вот ещё всегда топил за си. Оно и логично, так как си создавался как портируемый ассемблер, си гораздо более легковесный язык, чем си++, поэтому абсолютное большинство низкоуровневых системных вещей написано на си.
мимо
image.png6 Кб, 624x142
548 1502382
>>502267

>Купи vs2019


Так он и стоит, в intellisense всё в перемешку, вот эту настройку уже покрутил, не помогает.
549 1502391
>>502329
огромная часть говна конкретно под линуксы на сишечке пишется до сих пор. почти все виндовсменеджеры-конпозиторы как один из примеров. не так давно на реимплементацию осома под вейланд, которую хотели на расте сделать, перекатили на си, поскольку не смогли в wlroots под раст (кусок с композитором по крайней мере, остальную часть будут в расте пытаться). собственно, разрабы которые пытаются в suckless обычно пытаются делать говно в си (ебонутые).
550 1502392
>>502378
Много подсистем майкрософта на крестах, собстно, пишем драйвер на С++17, все отлично, лучше, чем сишная блевота.

Вполне возможно, что в 2000 си был выбором лучше, чем С++98 с зоопарком говна. Сейчас си не нужен вообще нигде.
551 1502396
>>502302
tag dispatching ещё поищи
553 1502401
>>502392
Именно поэтому винда мусор, лол)
А на Линуксе на крестах невозможно писать драйвера
554 1502407
>>502401

> Именно поэтому винда мусор, лол)


О, тут красноглазые дауны приехали. Ладно, с сектантами спорить - себя не уважать.
555 1502418
>>502401
То, что ты ниасилил не значит, что это невозможно
556 1502420
>>502407
Ля, виндузятник порвался
Кто юзает винду среди программистов? Дотнетчики и разрабы игр, ну и те, кто малвари ковыряют, лол
90% разрабов сидят на юникс-лайк ОСях, винда - глючный, костылированный, неудобный мусор для прогера. Она годится только для домохозяек, ради которых и, собственно, разрабатывалась. Ну и для игродаунов.
Цистерну бсодов тебе на ебало, короче))0
557 1502421
>>502418
напиши полноценный драйвер (сетевой или блочный, например) на крестах на Линукс, я поржу. И попробуй закоммитить его в мэйнтри, тебя обоссут быстрее, чем ты думаешь
Really+makes+you+think8c3a5f6470408.gif112 Кб, 240x240
558 1502427
>>502401

> Именно поэтому винда мусор, лол)


> А на Линуксе на крестах невозможно писать драйвера


На линуксе невозможно Х, а мусор почему-то винда.
Это тред си? Почему тут сиктанты?
559 1502431
>>502427
Потому что богоподобный Линукс написан на Си, как ты будешь писать кернел дрова для ядра, написанного на Си, НЕ на Си? Ты совсем что ли еба?)0
Да и вообще, писать кернел на плюсах с его темплейтными оверхедами в участке памяти, где нет пэйджинга (кернел спейс) - такая себе затея. Кресты СТРОГО не подходят для написания ядра, особенно, если надо создать реально шуструю и лаконичную ОС, а не ебучего Франкенштейна
560 1502436
>>502420
да, да, дурачок, мы все поняли уже. Можешь дальше обмазываться своим дерьмом и кукарекать на параше.
561 1502438
>>502421
это проблема не крестов, а сектантов
562 1502439
>>502431
полудурок не знает про extern "C". Ладно, посмеялись над клоуном и хватит.
563 1502455
>>502431

> Потому что богоподобный Линукс написан на Си, как ты будешь писать кернел дрова для ядра, написанного на Си, НЕ на Си? Ты совсем что ли еба?)0


Нет, я не "еба", мне интересно, почему нельзя.
https://stackoverflow.com/questions/10469188/is-it-possible-to-develop-a-loadable-kernel-module-lkm-on-linux-with-c
Почему тут нужен какой-то интерфейс? Почему недостаточно >>502439?
Ты же не хочешь сказать, что это должно быть НУ ПРОСТО ОЧЕВИДНО каждому, кто может баблсорт написать? Впрочем, зная, какие люди посещают этот сайт, ты вполне можешь оказаться из таких и даже найти единомышленников (которые могут быть как реально умными людьми, способными объяснить почему, так и просто уебанами, которые сами не знают, а просто услышали и повторяют).
564 1502476
>>502348
Бамп! Заебали с вашим срачем, помогите выбрать плиз
565 1502489
>>502476
с сырыми сокетами тебе вообще к системному апи.

А так - boost.asio это стандарт индустрии.
566 1502513
Подскажите студенту - долбоебу.

Делаем for(;iterator!=list.end(); ++iterator ) по итератору в листе, и когда находим определенный элемент пишем такую йобу: list.insert(list.erase(iterator), "data");
Так вот, почему после этого цикл по итератору спокойно продолжает идти дальше, если элемент, на который итератор указывает, уже стёрт?
567 1502533
>>502326
Оформись на stepik.org.
Там за прохождение курсов дают 3 месяца idea и resharper, кончится - запишись на ещё курс, пройди немного и получишь ещё лицензию.
568 1502534
Почему в c++ нет поддержки больших чисел изкоробки?
569 1502546
>>502513
Я вообще думаю, что ты словил UB, т.к. вообще итератор инвалидироваться должен после такой операции.

А так - ты понимаешь, как удаляется элемент списка? Ссылке на следующий элемент предыдущего присваивается следующий элемент текущего, а для текущего вызывается деструктор данных.
То есть твой итератор указывает на удаленный объект, который внутри себя хранит ссылку на следующий. Делаешь operator++ и итератор перескакивает на следущий, только он теперь стал текущим.
Хотя, по идее, твой итератор должен был указывать на текущий элемент, а текущий теперь - это следующий за удаленным, и после operator++ ты должен был его проскочить.
Попробуй сделать cout для каждого и посмотреть, что выводится.
570 1502547
>>502534
Хрен его знает, пропозал n1692 датирован 2004 годом. И я слышал много разговоров про wide_int. Видать недостандартизировали
571 1502550
>>502513
если у тебя
iterator = list.insert(list.erase(iterator), "data");
То все валидно.

Если именно то, что ты написал - то это UB
572 1502561
набиваем 700 пстов и перекатываем (со стухшей шапкой, как всегда)
574 1502563
>>502513

>list.insert(list.erase(iterator), "data");


непойму зачем ты так делаешь
разве не проще просто изменить значение элемента на который указывает итератор?
123.jpg57 Кб, 746x481
575 1502568
>>502563
Да, просто игрался с мемберами контейнеров и набрел на такое.
>>502550
Видимо UB, тогда.

>>502546
В этом и вопрос, что он указывает на удаленный элемент, и всё равно выполняет инкремент на следующий правильно. Вроде ничего не перескакивает, скрин прилагаю.
576 1502575
>>502563
Кстати, вспомнил зачем так делал. У меня там был список из const char*
577 1502577
>>502568

>Выполняет ... правильно


Так итератор же не в курсе, что он ссылается на удаленный объект. А так как это UB, то он инкрементируется правильно в твоей ситуации.
Попробуй в дебаге скомпилить, там есть валидация итераторов, стандарт обещает вызвать std::terminate в такой ситуации.
Либо попробуй другой компилятор, может быть другой результат
578 1502580
>>502391

> огромная часть говна


> под линуксы


Не смеши меня а.
579 1502585
Продристалися всем офисом с линуксошизика итт. Ага, дрова не пишут на С++, лол блять! Темплейтный оверхед вообще пушка.

Покормил очевидного тролля
580 1502587
>>502439
Тсс, а то вдруг он сейчас загуглит, как работает линковщик и догадается, что можно еще и ассемблерные спагетти в проект подцепить.
581 1502590
>>502575
хм, и как это меняет ситуацию?
указатель на константные данные это тебе не константный указатель вообще то
582 1502601
>>502580
Да успокойся уже. Никто не трогает твой швитой жму/пинус.
583 1502604
>>502585
Продолжу вопрос линуксошизика: а рили, как писать дрова на линупс на крестах? И надо ли? Если захочешь его законтрибьютить, то рили же нахуй пошлют
мимо растоеб
584 1502611
>>502604
Написатт реально, как и на расте. А вот принятие надо с красноглазиками обсуждать. Винда в этом плане мудрее, достаточно драйвер только подписать
585 1502615
>>502611
А как именно? Ибо в гугле расплывчатая инфа по сабжу, или это я спать хочу просто и засим ебусь в глаза
586 1502623
>>502615
https://github.com/veltzer/kcpp мне кажется ок инфа

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

хоть шаблоны, хоть лямбды, хоть if constexpr, хоть structured биндинги
587 1502627
>>502623
охуеть там гемора
Не проще реально на си писать дрова на линукс и не выебываться?)
588 1502629
>>502627
не думаю. Только за RAII уже можно си выкинуть на помойку и не вспоминать больше никогда и нигде.
589 1502630
>>502580
анон, если ты уверен в своей точке зрения, то говори её полностью и прямо, а не ограничивайся пассивно-агрессивными подпиздываниями и всякими намеками.
590 1502742
>>502398
С ней не лучше, хотелось бы чтобы именно члены класса были первыми, а не всякий срач с каких-то .h файлов.

Как вы с этим живёте? IntelliSense для C# в разы лучше работает.
591 1502750
>>502577
Всё, разобрался.

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
592 1502791
>>502150
О, тоже мессенджер пилишь? Я постгрес взял, полёт нормальный.
593 1502888
>>502742
C# вообще говно для макак, как можно пользоваться таким неудобным говном, которое с собой ещё и гроб в виде object таскает.
594 1502896
>>502888
Вот только оно на приктике удобней. Ну ка сделай мне split строчки без ебли на плюсах.
595 1502897
На связи ваша любимая вниманиеблядь из Нвидии.

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

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

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

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

Короче, ожидал сильно большего, такие делы.
596 1502904
>>502896
Что там делать то, string поддерживает индексацию, дальше элементарно
597 1502907
>>502904
Можно ещё бахнуть стрингстрим, например, чуть быстрее накодить выйдет
598 1502920
Посоветуйте какую нибудь тему для курсовой. Что то связанное с играми.
599 1502921
>>502920
ну, напиши двигло для вижуал новелл на SFML, или простенькую 3д игру на SDL
600 1502922
>>502904
А если сторона в utf8? Как ты будешь изьебываться тогда?
601 1502923
>>502921
не SDL, а OpenGL, самофикс
602 1502926
>>502897
Что надо знать, чтоб в нвидию попасть на мидла, если там такие нужны?
603 1502931
>>502922
wstring заюзаю, в чём проблема?
604 1502941
>>502926
Не помню, чтобы были мидловые крестовакансии, но, в любом случае - тебе нужно только идеальное знание С++, включая С++17, т.к. мы пользуемся самыми последними фишечками, и стабильно переезжаем на новые компиляторы\стандарты.
605 1502963
Двачик, насколько адекватно делать поля класса ссылками на объекты? Именно ссылками, не указателями. Лично меня это повергло в дичайший шок, я даже не задумывался, что так можно делать.
606 1502964
>>502904

>Что там делать то, string поддерживает индексацию, дальше элементарно


А на C# я просто пишу String.Split() и получаю нужное. Элементарная разбивка строки на подстроки в плюсах это боль.

В общем на мой вопрос никто так и не ответил, а жаль.
607 1502971
>>502964

>Элементарная разбивка строки на подстроки в плюсах это боль.


Нет никакой боли, обычный split как раз обычно не совсем подходит и тогда в шарпах приходится писать какие-то костыли через indexof, когда в плюсах можно удобно всё сделать и потратить намного меньше ресурсов.
608 1502972
>>502964
Тебе трудно написать функцию строчек из десяти?
609 1502977
>>502897
Вы там юзаете Winapi?
610 1502980
>>502971

>обычный split как раз обычно не совсем подходит и тогда в шарпах приходится писать какие-то костыли через indexof


В этом то и суть, когда не подходит то пишешь что тебе там удобно. В 99% случаев достаточно функционала из коробки.

>>502972
Миллоны программистов в миллионах проектов каждый раз пишут функцию из 10 строчек. Вместо ёбанных рейнджей охуеть блять begin() end() просто спрятали лучше бы сплит сделали.
611 1502983
>>502980
Вот как раз Split из коробки говно, сколько раз не юзал, всегда было проще самому написать, чем ебаться с ним.
612 1502984
>>502977
ясен хер, как еще писать системный софт под винду?
613 1502988
>>502984
Я просто недавно начал в него вкатываться и боюсь как бы не остаться никому не нужным с ним. Что скажешь по поводу GDI+?
614 1502989
>>502983
Факт в том что он есть, и не надо писать что-то своё каждый раз. Стандартная либа плюсов очень ограничена по сравнению с шарпом.
615 1502991
>>502989

>Стандартная либа плюсов очень ограничена по сравнению с шарпом.


Что ты подразумеваешь под стандартной либой? Шарпы тебе сразу всё говно тянут, в плюсах всё разбито по нужным блокам. Буста и Стл хватит с головой чтобы покрыть все функции из библиотеки шарпов.

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


Пиздуй тогда в джаваскрипт, там как раз уже всё написал за тебя, только будешь функции вызывать.
616 1502992
>>502988

>GDI+?


Не нужно, когда есть OpenGL, Direct2D\Direct3D. Но в любом случае, я больше по вещам типа файловой системы, и прочей системной херне, а не графончику. Специфика команды.
617 1503004
Вечер в хату

Объясните мне, почему у лямбда-функций не может быть дефолтных аргументов?
618 1503010
>>503004
А зачем они им?
619 1503016
>>502991

>Шарпы тебе сразу всё говно тянут, в плюсах всё разбито по нужным блокам.


Точно так же всё разбито на отдельные части.

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


Буст таки не входит в стандартный комплект.

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


Хуйли ты злой такой? Или о плюсах как о мёртвых надо - или хорошо или ничего?
620 1503035
>>503010
На всякий случай
Раз они косплеят функции, то пусть будут максимально на них похожи, чтобы меньше деталей запоминать - например за этим
621 1503046
И что это вообще за хуета с захватом локальных переменных? Почему бы просто разрешить доступ сразу ко всему из внешнего скоупа?
622 1503050
>>503046
Потому что каждую переменную может потребоваться захватывать по разному.
623 1503072
>>503046
[=] или [&] тебе в помощь, блядь
624 1503082
>>502750
таки лучше было бы чтобы ты вместо сырых указателей в своем списке использовал unique_ptr
а то что ты делаешь, делал бы через обычное присваивание
так было бы меньше вероятности что ты отстрелишь себе ногу
625 1503085
>>503035
Они косплеят функторы.
626 1503090
>>502896

>Ну ка сделай мне split строчки без ебли на плюсах.


Boost tokenizer
или
Boost String Algorithms - split
627 1503095
>>502897
ты зажрался, дружок
даже 200к, даже в дс - просто заоблачные деньги, просто деньги которые решают все проблемы..
628 1503098
>>503090
Тащить огромную либу ради функции, которая во всех нормальных языках есть из коробки. Плюсы такие плюсы
629 1503099
>>503004
потому что основное применение лямбда функции - сконструировать ее по месту и сразу передать на выполнение
630 1503100

>Байтойобство здесь — https://gcc.godbolt.org/ все очень удобно оформлено даже для нюфагов, куча версий компиляторов, дают тыкать настройки ручками — ляпота короче.


А есть такой же сайт для байткода джавы?
631 1503103
>>503046
потому что лямбды в крестах пытаются косплеить замыкания в функциональных языках
но, конечно же, следуюет помнить что лямбды у нас таки не полноценные замыкания и мы не можем делать на них те штуки что делают в языках лисп-семейства
632 1503104
>>503098
ты троллишь что ли?
ну дык напиши тогда свою функцию токенизации на stringstream, она будет размером строк в 10
633 1503108
>>503104
Писать свою функцию, которая во всех нормальных языках есть из коробки. Плюсы такие плюсы
634 1503111
>>503095
я получаю 430 каждый месяц, зачем мне идти на 260 * 0.87 + 2-4 зарплаты бонусом
635 1503114
>>503111
Пиздишь же. Это 6700$ (~80к в год) бля, а может и не пиздишь
636 1503115
>>503111
был бы твоим манагером, тебя бы выгнал на мороз, набрал бы на твое место 3х бородатых синьоров-помидоров за 120к и еще бы на пару стажеров денег хватило
637 1503116
>>502623

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


Можно и с ней, только придется переопределять всякие new/delete и прочее.
638 1503119
>>503111
Ай пиздабол, нет таких зп в ДС, даже в срунвидии. Да и выше ты писал, что хуйней какой-то занимаешься, а не конкретно дрова пилишь. Врёти.
639 1503120
>>503114
Я сам в ахуе, серьезно.

>>503115
Хех, друг. У нас больше года была открыта вакансия на тот же грейд\зп, что и у меня. Хуй кто прошел, причем сильно не валили.
640 1503122
>>503119
Дрова пилятся в Санта Кларе, мы тут тоже дохуя полезного в Московском офисе делаем.
641 1503123
>>503120

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


> Хуй кто прошел, причем сильно не валили


А вот тут пиздишь точно
642 1503128
>>503123
Я персонально собесил людей, и потом фейспалмил, когда приходят додики, хотят 300 тысяч зарплаты, и даже не знают, что такое вариадик шаблон. Или там арифметику указателей сложнее чем инкремент указателя не знают. Про что-то адванцед, типа мув семантик вообще 2 человека рассказали за год (собстно, их и наняли, сидят рядом со мной, но вакансий было штуки 4, насколько я помню).
643 1503135
>>503128

>типа мув семантик вообще 2 человека рассказали за год


Вот тут поддвачну, из кучи собеседуемых мной людей об этом человека три рассказали. И то пиздец как обзорно есть подозрения, что они просто смогли перевести слово move на русский язык
644 1503136
>>503128
Прям вообще не знали? Или использовать не умели?
645 1503140
>>503136
Друг, ты идешь на вакансию со стартовой зарплатой 280-300к на руки. Ты на эти деньги мне должен обьяснить как это все работает, написать простенький move-only класс, и обьяснить, в идеале, еще и про forwarding reference.

Звучит сложно, но на деле - это пара десятков страниц из книги Скотта Майерса про модерновый сиплюсплюс. И да, мы это активно используем в коде, а не доебываемся потому-что можем.
646 1503143
while(r){
r>>temp;
r - istrinstream, проблема в том, что while исполняется на 1 раз больше чем слов в строке, почему?
647 1503144
>>503140

> move-only класс


Что это значит?
648 1503147
>>503144
класс, который нельзя скопировать, только переместить.
Каноничный пример - std::unique_ptr
649 1503150
>>503147
Чет слишком легко для собеса на такую зарплату
650 1503152
>>503140

>Ты на эти деньги мне должен обьяснить как это все работает


А хули тут рассказывать то? Просто же компилятор может взять и скопипастить данные из другого класса не делая при этом deep copy и оставляя перемещаемый объект в невалидном состоянии. Все временные объекты ||они справа обычно от знака = || rvalue.

> move-only класс


struct A {
A(&&) = delete;
A operator= (A&&) = delete;
A (const A&) { /do something/ }
A operator=(const A&) { /do something/ }
}
Оно что ли?
651 1503153
>>503152
Блядь, это же не дискорд, тут спойлеры иначе пишутся
652 1503154
>>503150
Это только один вопрос из многих. Все что мы требуем - знание С++, не более. Но его вообще почти никто не знает, только какие-то куски, понимания вообще нет у среднего претендента на сениор девелопера. Ну и да, мы требуем модерн, как я выше писал. Если ты в 2019 году остановился на С++11, ну, сорьки, что еще сказать. Мы переедем на С++20 как только студия начнет его поддерживать.
653 1503155
Почему все пользуются студией, а не clion?
654 1503156
>>503140
Так я это все узнал на первом курсе еще. Могу в нвидию идти работать?
655 1503157
>>503152

>А хули тут рассказывать то?


Вот ты не поверишь, даже этого добиться от среднего претедента уже проблема.

> move-only класс


Ну, подразумвается, что есть какой-то ресурс еще, который надо переместить. Например хэндл, или указатель, или что-то еще тривиально-не-копируемое.
656 1503158
>>503156
Ну, останавливать тебя от подачи резюме точно я не буду.
image.png45 Кб, 436x507
657 1503167
>>503157

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



Ну это прям жуть как сложно. мегапримитивный unique_ptr
658 1503171
>>503167
ну, собстно, да. Как будут вакансии - приходи, рофл
659 1503175
В нвидии тоже опенспейс?
660 1503177
>>503175
за 430к я готов устроить опенспейс хоть у меня в анусе
661 1503179
>>503175
да, но он более-менее комфортный нет гигантских пространств, тупо 1 очень вытянутая комната на каждом этаже.
662 1503184
>>503171
Млять, серьёзно что ли люди, которые идут на позицию сеньера с зп в 400К не могут написать такое? Мне сейчас с моей зп в 30к стало просто неимоверно обидно
663 1503186
>>503184
Все настолько плохо, на полном серьезе. Но, я повторюсь, это далеко не единственный вопрос с собеса.
664 1503187
>>503184
30к даже джуны не получают. Ты что то делаешь не так.
665 1503188
>>503186

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


Можешь ради интереса кинуть 1-2 самых сложных лол
666 1503191
>>503187
Просто это не Москва и не город-миллионник. Когда я был джуном, то зп вообще была 17к не знаю, почему я не уехал никуда
667 1503193
>>503188
написать вариадик тимплит, который принимает кучу разных чисел (все беззнаковые, но разные по размеру), возвращает их сумму, и падает со статик ассертом, если хоть что-то из аргументов не число. Но это бонусный вопрос. Смог написать 1 из двоих нанятых.
668 1503198
>>503193
Ну по памяти такую хуйню сложно написать, с гуглом за минуту справился бы.
669 1503199
>>503188
еще многопоточку спрашиваем (обожаем ее), ну и вообще, дефолтные вопросы за эксепшены\полиморфизмынаследования. Так то, ничего сложного, если ты не отстал на 10 лет от тренда.
670 1503201
>>503198
я по памяти напишу за минуту на доске. Алсо, давали гуглить в качестве эксперимента - все равно не писали.
671 1503207
Аноны, а в ваших коллективах есть люди с проблемами речи? Как к ним относятся, влияет ли это на продуктивность?
image.png23 Кб, 473x235
672 1503216
>>503193

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


Ты сейчас серьёзно? Это типа сложно да ещё и с гуглом?
Писал по памяти (давно не пользовался, на работе чертовы деды на 11 сидят).
В 17 можно ещё проще, но я не вспомню точно синтаксис
Что-то типа такого

template<typename T, typename... Args>
auto sum(T a, Args ...args)
{
return args + ... + a;
}
Но вот тут я затрудняюсь сказать, как static_assert'ом чекнуть все значения
673 1503217
>>503207
ПМ картавит, старший разраб заикается, я (тимлид) часто чрмлагтсаарлмпоордзж говорю или что-то подобное, когда параллельные мысли в голове.
Всем пох.
Шипилявого тестера травим
674 1503225
>>503217
Тестера грех не травить
675 1503231
>>503216
Ну, тоже да, такой ответ вполне устроит.
Все настолько плохо на рынке труда нынче.
676 1503237
Стоит устраиваться джуном за 45к? Думаю год поработать и свалить. О компании пишут, что она говно и работают там в основном студенты без опыта, которых она и эксплуатирует.
677 1503240
>>503237
первая работа должна быть любой. Ты на опыт работаешь. Дальше уже выбирать можешь.
678 1503243
>>503240
Ну не должна, но если других вариантов нет, то пусть работает. Уйти можно всегда. А так хоть будет что заявить на следующей. Так что да, стоит, если нет других вариантов
679 1503325
>>503216

> писал по памяти


> скрин из ide


Пиздежом пахнет.
680 1503326
>>503216
Для варианта со сверткой можно if constexpr сделать, я думаю. Компайл-тайм как раз, под условия подходит. Свёртка же, кажется, не требует одного только return в теле функции.

Кстати, нвидианон, а нужна функция, которая съедает слагаемые аргументами функции, не аргументами шаблона?
Можно же написать sum<1, 2, 3, 4, 5, 6>::value, по аналогии с компайл-тайм факториалом, насколько я понял шаблонную магию.
681 1503327
>>503326
Пометка к первому абзацу: смотрел лекции Хандельянца(который главный разраб pvs studio), он сказал, что способ из C++17 потом компилятором разворачивается в тот код, который у тебя на скрине. То есть, достаточно проверить параметр "а" на беззнаковость, по идее.
682 1503329
>>503154
А что на счёт каких-нибудь йоба-шаблонов? Они шибко используются?
683 1503342
>>502963
Конечно можно. Только следи за временем жизни, чтобы объект по ссылке не удалился раньше класса, в котором он используется.
684 1503350
>>503217

> Шипилявого тестера травим


Ну че вы как нелюди, а.. Ему и так хуево наверное.
685 1503353
>>503325
це ide - Visual Studio Code. Ничего, кроме как синтаксис подсвечивать , она не умеет. Об анонах забочусь, чтоб они не мучились, читая чёрно-белый код
686 1503357
>>503342
То что можно - это понятно. Вопрос больше в том, насколько это нормальный подход. По моему это в разы хуже, чем юзать указатели. Шанс получить dangling reference точно такой же, как и удалить объект по указателю где-то и получить указатель на невалидную память
687 1503358
>>503326

>Для варианта со сверткой можно if constexpr сделать, я думаю. Компайл-тайм как раз, под условия подходит. Свёртка же, кажется, не требует одного только return в теле функции.



Как то я вообще не могу понять, как ты сюда хочешь if впихнуть
688 1503360
>>503329
CRTP и тот же самый variadic template ты обязан понимать, type_traits туда же, forwarding туда же, на всякий случай ещё boost::mpl/mp11/fusion/hana должен понимать

мимо другой аное
689 1503370
>>503179
Это же наоборот уебанство, лучше пусть коллеги подальше сидят, чтобы я их пердёж не слышал а они мой
690 1503371
>>503329
Да, но немного. Каждому инструменту свое место применения, и мы не перебарщиваем с этим.

>>503326
Иф констэкспр тоже можно, если ты вариадик хочешь без перегрузки на конец рекурсии делать
691 1503382
>>503357

> По моему это в разы хуже, чем юзать указатели.


Это в разы лучше.

>Шанс получить dangling reference точно такой же, как и удалить объект по указателю где-то и получить указатель на невалидную память


Шанс получить висящую ссылку нулевой. Нужно просто™ следить за временем жизни своей хуйни.
Если ты не можешь проследить за временем жизни - то у тебя нихуя не получится даже с указателями.
sage 692 1503385
Нахуя так много говна на цппкон залили? Теперь придется рыться в этих сотнях видео и искать годноту, пиздец! Может кто-то выделил для себя чьи-то выступления? Кидайте сюда.
693 1503387
Это, мож перекатить тред уже?
694 1503390
>>503382

> Нужно просто™ следить за временем жизни своей хуйни.



Точно такая же ситуация и с указателем. Надо просто™ следить за временем жизни своей хуйни а лучше забыть об этом говне и взять std::shared_ptr
695 1503392
>>503387
Ну так дерзай, хули мы за тебя что-то делать должны?
696 1503393
>>503390
Блядь, я думал ты студентик, а ты долбоёб оказывается.
697 1503397
>>503392
ну пожалуйста
698 1503401
>>503393
Пояснишь?
В данном случае разница между ссылкой и указателем в том, что ссылка всегда на что-то ссылается (не факт, что на что-то валидное, ибо никто не мешает хуйнуть в неё объект, которой впоследствии разрушится при выходе из scope) и её не нужно уничтожать, ибо за объект отвечает кто-то другой.
С указателем точна та же херня. Его можно забыть инициализировать или можно разрушить объект, на который он указывает. И кто-то должен удалить его. Возможно кто-то другой
Каких-то явных преимуществ ссылок вообще не видно. А недостаток - крайняя неочевидность того, что конструктор класса или метод принимает ССЫЛКУ, которую потом ещё и хранит.

shared_ptr решает все эти проблемы. Его хуй сделаешь невалидным и не нужно следить за его уничтожением. Чекать ifом его элементарно. Да, можно с пеной у рта орать, что его копировать медленно, но эти несколько наносекунд от нескольких копирований никакой роли не сыграют
699 1503407
>>503401
А атомик счётчик внутри shared_ptr - это норма? 40 тактов на инкремент против одного?
700 1503412
>>503407
А ещё в каком-то из тредов видел, что написанная с shared_ptr программа - нездоровая, что ее можно переделать на unique_ptr и победить проблемы.
Но это неточно, только слухи.
701 1503416
>>503412
А где вообще может возникнуть необходимость ссылаться на один объект сразу нескольким господам? Многопоточка?
sage 702 1503417
>>503412
Так и есть. Даже на CppCon'e об этом выступление есть и не одно.
sage 703 1503422
ПЕРЕКАТ >>1503420 (OP)
ПЕРЕКАТ >>1503420 (OP)
ПЕРЕКАТ >>1503420 (OP)
ПЕРЕКАТ >>1503420 (OP)
ПЕРЕКАТ >>1503420 (OP)
704 1503439
>>503416
ну смотри: есть несколько пользователей ресурса
как только пользователей этого ресурса не станет или он им больше не понадобится, ресурс уничтожается
вот и все
705 1503441
>>503385
выступление чувака в шапочке из фольги
охуенное
706 1503442
>>503237
как можно эксплуатировать студента без опыта?
с него же хуй пользы, лол
только вред
707 1503443
>>503231

>Все настолько плохо на рынке труда нынче.


обычные голодные игры
капитализм хуле
один выжил, получает свои 300к и ему заебись
остальные как крысы забились в свои норы, откуда они попытались вылезть
или уже здохли к 30ти-40ка годам
причем молча
708 1503444
>>503216
уси-пуси
с халявной сверсточкой то и птушник это может сделать
709 1503531
>>503401
Ты непробиваемый. Если в коде я вижу ссылку, значит я могу быть уверен, что объект не разрушится, пока живёт этот класс. Если я вижу указатель, значит стоит ожидать, что какой-нибудь уёбок может сделать его невалидным.
Самый простой пример: нужно вывести в диалоге список лучших аниме тайтлов, т.е. сформировать список -> создать диалог -> установить ему список -> показать. Предлагаешь делать shared_ptr<vector<T>>? Или может передавать туда T★?
99.9% всех потребностей любого крестовика - это создать объект на стеке/через make_unique и передавать ссылку на него.
Почитай на досуге
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#rsmart-smart-pointers
710 1503606
>>496995
Вот это '->' и это '().' одно и тоже, следовательно ты делаешь ((t_).f_)(args ...)
Ты обращаешься к члену c именем
f_ типа сласса t_
711 1503607
>>503606
почему-то знак звездочки исчез перед f_
712 1503642
>>503199
>>503193
Неужели кругом столько дебилов?
713 1503657
>>503642
Меня больше удивляет зачем они на сеньоров приходят собеседоваться. Тут в чатах сеньоры устройство процессора и ОС знают на приличном уровне, математическую базу имеют и 10+ лет опыта, а у этого анона приходят полумидлы видимо с надеждой что прокатит, я хуй знает как это еще можно обьяснить.
714 1503696
>>503657
А ещё потому что хуй его знает, когда ты джун, миддл или сеньор.
Я изучаю плюсы для себя, смотрю лекции/читаю книги/практикуюсь/пишу мелкие утилиты на работе, вроде знаю уже много(лол), но на джуна не потяну - нет опыта.
Более того, я на основной работе имею знания сеньора(судя по тому, как у нас собеседуют на эту вакансию, прошел бы собес), но опыта работы полтора года и максимум тяну на миддла, потому что одних знаний мало. Странная вообще градация, как по мне - но другой нет.
715 1503766
>>503696
Ну так мало знать язык, надо еще и уметь навыки работы в продакшене. Можешь быть хоть братом Дурова, если ты будешь тратить полтора месяца чтобы написать охуительно быстрый йоба-боба рест-сервер просрав все дедлайны, то бизнесу ты нахуй не нужен, наймут пхп макаку которая твою задачу сделает за неделю и всё.
716 1510123
с++ или с
717 1510379
>>510123
Pascal
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 16 ноября 2019 года.

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

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