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


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

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
272 33 103

Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/ /cpp/ Аноним # OP 30/04/19 Втр 17:55:53 13921961
изображение.png (1002Кб, 1000x563)
1000x563
30/04/19 Втр 17:58:48 13921972
>>1392196 (OP)
ору с дурачка, весь раздел засрал
Аноним 30/04/19 Втр 18:02:27 13922003
>>1392196 (OP)
В следующий раз у тебя обязательно получится! Не сдавайся!
Аноним 30/04/19 Втр 22:09:59 13922954
>>1392196 (OP)
Заставь дурака тред перекатывать.
Аноним 02/05/19 Чтв 15:38:18 13929885
>>1392865
> https://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file
Кстати, то, что для инстанциации шаблонов нужно иметь исходники — это чисто деталь реализации. Стандарт разрешает инстанциацию шаблонов без их исходного кода.
https://timsong-cpp.github.io/cppwp/n4659/lex.phases#1.8
> The definitions of the required templates are located. It is implementation-defined whether the source of the translation units containing these definitions is required to be available.
Оправдывайтесь, чмохи Аноним 02/05/19 Чтв 23:17:31 13931996
pepe dancadeiro[...].gif (2653Кб, 800x450)
800x450
Аноним 02/05/19 Чтв 23:40:24 13932127
>>1393199
>www.vitorian.c...
Хм А почему этот сайт мне средство увелечения пениса предлагает? В это м есть какой-то скрытый смысл?
Аноним 02/05/19 Чтв 23:41:05 13932138
Аноним 02/05/19 Чтв 23:45:15 13932179
>>1393213
Ты JS-ник и у тебя нет пениса.
Аноним 02/05/19 Чтв 23:50:47 139322010
мне тоже не предлагает, но у меня пенис к сожалению есть

мимо js-ник
Аноним 04/05/19 Суб 19:08:02 139395311
photo2019-03-18[...].jpg (79Кб, 1280x897)
1280x897
Ребята, помогите. У меня есть динамический массив и я передвигаю указатель по элементам. Как мне выяснить, что указатель вышел за пределы массива ? Размера массива у меня нет. Я предполагаю что методом try-catch, но не пойму как закодить.
Аноним 04/05/19 Суб 19:14:39 139395712
>>1393953
Какого массива? std::vector?
Аноним 04/05/19 Суб 19:19:29 139396013
>>1393220
> к сожалению
Котомальчик, залогинься.
Аноним 04/05/19 Суб 19:24:40 139396614
Какой же раст всё-таки офигенный по сравнению с этим калом.
Аноним 04/05/19 Суб 19:33:32 139397415
>>1393957
Нет обычного, выделил память с помощью new.
Аноним 04/05/19 Суб 19:35:24 139397616
>>1393974
Тогда надо знать размер.

Неверный доступ для обычного массива [] не кинет С++ эксепшен.
Аноним 04/05/19 Суб 20:46:07 139403317
изображение.png (8Кб, 345x486)
345x486
изображение.png (2Кб, 419x152)
419x152
изображение.png (20Кб, 795x253)
795x253
Двощ, обоссы. Я тупой сказочный долбоёб и нихуя не понимаю.
1) Нестед классы ведь видят друг друга, не так ли? Если мой interface является другом insides, то он должен быть способен пользоваться приватными методами и переменными, не так ли? Так какого хуя компилятор жалуется на приватность?
2) invalid use of non-static method - это ещё что за хуйня? Гугл не помогает. Почему я не могу получить доступ к переменной, и при чём тут метод?
Аноним 04/05/19 Суб 21:02:55 139404718
Я-то, скорее всего, перестану изобретать велосипед и обойдусь простеньким attorney-client паттерном, но я, блять, нихуя не понял, почему мой код даже не скомпилился. Просто, блять, без понятия.
Аноним 04/05/19 Суб 21:05:48 139405119
>>1394033
Ты из какого языка пришел?

Напоминаю, что класс - это описание того, как обходиться с данными объектов, причисляющих себя к этому классу. У тебя в программе не создано ни одного экземпляра/объекта класса. К чему по-твоему должен относиться insides::filepath? Этих данных просто не существует.
Аноним 04/05/19 Суб 22:21:58 139411020
изображение.png (6Кб, 738x53)
738x53
>>1394051
С исключительно базового си.
>Этих данных просто не существуют.
>Нет объекта.
Да, ты прав. Я в своём примере обращал к переменной без его объекта. Там явно должно было быть не
insides::filepath, это уж точно.
Аноним 05/05/19 Вск 00:02:12 139423121
>>1394110
У тебя очень своеобразный подход к ООП-дизайну, поэтому я подумал, что ты из чего-нибудь эдакого пришел, например из жс или питона. Там подобный код даже прокатил бы.

>attorney-client
Я в проде не встречал подобного. А на стековерфлоу как бы намекают, мол нахер надо. Действительно, зачем тебе это нужно, если есть наследование? Создай базовый класс interface с чисто виртуальными функциями, отнаследуй от него insides и перегрузи (реализуй) методы. Или, еще тупее, "раскрой скобки", то есть все содержимое класса insides засунь в приват bike_file, все методы из interface выкинь в public и удали нахер два бесполезных вложенных класса.

Друзья не нужны.
Аноним 05/05/19 Вск 00:17:28 139424622
изображение.png (16Кб, 775x498)
775x498
>>1394231
>Создай базовый класс interface с чисто виртуальными функциями, отнаследуй от него insides и перегрузи (реализуй) методы.
Собирался запилить вместо друзей, но вначале решил попробовать их.
>Или, еще тупее, "раскрой скобки", то есть все содержимое класса insides засунь в приват bike_file, все методы из interface выкинь в public и удали нахер два бесполезных вложенных класса.
Что-то подобное запилил на пикриле сам.
Аноним 05/05/19 Вск 00:27:55 139426023
Я прям сразу вижу несколько недостатков:
1. избыточный синтаксис, inner_obj не нужен.
2. к каждому интерфейсу прикреплены свои личные кишки; нахуй это сдалось, кишки должны быть независимы от своего интерфейса, и наоборот.
3. не стандарт.
100% ещё что-нибудь не так. Такие дела.
Аноним 05/05/19 Вск 01:55:34 139429824
>>1392196 (OP)
Плюсики, я уже обращался по этому вопросу, но все же.
>C. В программе должен быть создан визуальный интерфейс.
Тогда я вопросил является ли CLI визуальным интерфейсом, особенно если там реализованны диалоговые меню с применением спец символов + таблицы с преминением псевдографики.

Анон тогда ответил что CLI является абстракцией визуального интерфейса и мол я могу пилить курсач не боясь обосраться.

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

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

Спасибо.
Аноним 05/05/19 Вск 04:49:56 139432825
>>1394033
>Двощ, обоссы.
Всегда пожалуйста.

>Нестед классы ведь видят друг друга, не так ли?
Видят, но не так, как ты думаешь.

>Если мой interface является другом insides
bike_file::interface не является другом bike_file::inside.
Класс, впервые объявленный во friend declaration, объявляется в ближайжем окружающем неймспейсе, в твоём случае, видимо, глобальном. Там же, где mister_client.

Это знать надо. Это классика, блять.

Объяви класс bike_file::interface до bike_file::inside. Типа
class bike_file {
private:
class interface;
class insidea {
...
frind class interface; // interface здесь == bike::interface
};
Аноним 05/05/19 Вск 10:52:45 139437826
Есть смысл изучать сабж для вкатывания в IT? Или без вышки и 5 лет опыта пользы всё равно не будет?
Аноним 05/05/19 Вск 11:54:46 139440427
>>1394378
Мне кажется, что в крестах без хорошего образования будет тяжело зарабатывать. Нормальные деньги платят только за лютое задротство вроде HFT или Computer Vision (и то не всегда), но даже там зарплаты максимум на уровне обычных крудошлепов/фронтендеров. "Обычный" кодер-плюсовик без глубоких познаний в математике получать будет в среднем процентов на 30 меньше аналогичных спецов по другим языкам.
Аноним 05/05/19 Вск 12:41:48 139442628
>>1394298
Не знаю, кто тебе такой совет давал, но здравый смысл (и опыт обучения в наших вузах) говорит о том, что они хотят именно формочки с кнопками - может быть, прокатит, но не скажу наверняка.
Аноним 05/05/19 Вск 12:43:58 139442829
>>1394404
> максимум на уровне обычных крудошлепов/фронтендеров
Ну тут хуй знает, но в остальном ты прав - средний плюсовый макак будет пилить легаси в каких-нибудь госконторах за гроши.
Аноним 05/05/19 Вск 12:57:28 139443330
>>1394298
> Тут нужно в пункте про разработку визуального интерфейса накидать побольше аргументов в мою пользу иначе препод может доебаться а крыть мне будет особо нечем.
> Если CLI дейтствительно счтается за визуальный интерфейс (суть в том что не указано же прямо -- графиеский), не могли бы вы предоставить пруф какой, или интересную позицию на это счет.
Ты о совершенно не связанных вещах говоришь.
Аргументы в пользу CLI - малые времязатраты, обладает всеми нужными возможностями, универсален.

Является ли он визуальным - да, йдля взаимодейчтвия с таким интерфейсом необходимо на него смотреть.
Аноним 05/05/19 Вск 13:31:55 139444631
>ActiveX, MFC
Совсем говно мамонта? Вакансия не предполагает глубоких знаний, но на месте разобраться и работать с этим заставят.
Аноним 05/05/19 Вск 14:04:35 139445632
Аноним 05/05/19 Вск 15:17:52 139449533
>>1394404
Ну ладно, хотя бы неплохая база для изучения других языков будет.
Аноним 05/05/19 Вск 16:37:57 139452934
>>1394495
Вкатывался такой в кресты 3 года, а потом оказалось, что рыночек порешал и бизнес хочет себе сишарп или джава девелоперов со знанием кучи фреймворков, в которых ты не шаришь.
>хотя бы неплохая база для изучения других языков будет
Какой смысл в языке, если ты не разбираешься в том, как устроен современный процесс разработки, не знаешь ни одного бизнес-фреймворка и не шаришь в предметных областях энтерпрайза? Снова в 30 или сколько там лет пойдешь грести джуниор джава девелопером на галеру? Лучше уж дальше в роли синьер цпп дева месить легаси за 60к не снимая свитер.
Аноним 05/05/19 Вск 17:04:08 139454035
>>1392196 (OP)
Пацаны, не знаю еще куда обратиться, поэтому пощу здесь:
Я далек от архитектуры операционок, поэтому назрел вопрос: по какой причине на Винду имеется столько разнообразных вирусов всех форм и мастей, а в UNIX-подобных системах таких раз-два и обчелся?
Обе операционки написаны в основном на С/С++ - но откуда такая разительная разница?..
Аноним 05/05/19 Вск 23:15:43 139466636
>>1394298
Спросил бы у препода а не двача, лол.
Аноним 05/05/19 Вск 23:20:06 139466937
Аноним 06/05/19 Пнд 20:13:24 139486338
Как char может хранить UTF-8 символы если в char влазит только 255 символов?
Аноним 06/05/19 Пнд 20:26:53 139486639
>>1394863
UTF-8 совместим с первыми 128 чарами из ASCII (7 бит, 127 чаров на латиницу + спецсимволы).
Т.е часть того что есть в ASCII закодировано точно также и в UTF-8, но разумеется UTF-8 - более обширная кодировка, и для всего что не входит в ASCII (например для кириллицы, или китайских иероглифов) код чара будет занимать больше 8 бит. Цифра рядом с UTF это минимальный размер одного чара, но максимальный может быть и 32 бита.
Аноним 06/05/19 Пнд 20:27:30 139486840
>>1394863
Ну а вообще никак не может. Разве что некоторые символы хранить в нескольких чарах.
Аноним 06/05/19 Пнд 20:28:19 139486941
>>1394866
В этом посте подразумевается что чар = символ, а не char-тип из С/С++
Аноним 06/05/19 Пнд 20:53:59 139487942
>>1394866
>>1394868
Да, оказалось что хранит подряд. Если положить один китайский символ в string то .size() вернет 3.
Аноним 07/05/19 Втр 00:10:52 139494843
Аноним 07/05/19 Втр 02:45:26 139498844
image.png (112Кб, 902x530)
902x530
щто-нибудь из этого порекомендуете? дошел в шлее до калькулятора и почувствовал что навернул говна. не может же хорошая книга иметь такие коряво работающие примеры и даже не попытаться оправдаться в тексте.
Аноним 07/05/19 Втр 02:46:34 139498945
>>1394988
книжка по сдвг случайно туда попала
Аноним 07/05/19 Втр 02:51:09 139499046
Аноним 07/05/19 Втр 14:21:06 139521547
>>1394540
>>1394669 этот в большей степени прав, на виндах можно нормально админить, так что никакая зараза (почти) не пролезет, но пользователи обычно раздают UAC на лево/право. Фактически, юзверь сам ставит вирусы, если брать шинду в вакуууме то заюзать какой - нибудь эксплойт будет не легче чем на никсах, а того и сложнее.

По факту, мест куда можно запрятать малварь в ляликсе в десятки раз больше чем на шинде, однако хуй кто в эти места пустит без uid = 0
Аноним 07/05/19 Втр 17:48:33 139531148
Анон, можешь помочь с написанием анализатора на сpp? Есть правила правосторонней грамматики:
S->Sa|Sb|Ac
A->Ac|d
знаю что он недетерминированный и что РС-методом описать не получится, но алгоритм то есть?
Хз что делать с нетерминалом А, пытался до этого сделать в тупую:
bool scan(){
enum state{H,A,S,Er}
state CS=S, char c;
do { switch(CS) {
case H:
if(c=='d') {gc(); CS=A;} else CS=Er;
break;
...
но вот че с А делать хз.
Аноним 07/05/19 Втр 19:08:30 139534849
>>1395311
Мне кажется, что эта грамматика описывает строки, начинающиеся на d, имеющие несколько подряд букв c, а затем в любом порядке a или b, то есть регулярка будет выглядеть как-то так:
> dc(a|b)
В крестах остается только закодировать регулярку (гугли std regexpr) и матчить входящие строки

Даже если я не прав, обычно алгоритм такой:
1. Устранить левостороннюю рекурсию
2. Построить из грамматики автомат
3. Используя автомат, матчить строки
Аноним 07/05/19 Втр 19:11:25 139534950
>>1395348
Бля, опять звезды проебал. А еще там после c плюс, вроде
> dc+(a|b)*
Аноним 08/05/19 Срд 08:06:28 139554751
Это же нихуя не легитимный? Или всем похуй? Короче напишу здесь.
Посмотрел вот это: https://www.youtube.com/watch?v=g2iyNH2Gh1k
Ахуел когда узнал что С++ пишет всего несколько человек. ПИЗДЕЦ! Как так?
Аноним 08/05/19 Срд 09:55:13 139557552
>>1395547
Кресты непродуктивны. Кому в 2к19 нужен язык без менеджера пакетов, с ограниченной стандартной библиотекой (нет бд, нет сети), с ручным управлением памятью, и необходимостью компилировать под каждую отдельно взятую систему? Сравни с жавой, питоном, да и вообще любым современным языком, где имея пустую операционную систему ты за 10 минут без заранее написанных скриптов поставишь все необходимое для разработки и напишешь простенький клиент для бд, который соберёшь один раз и он сможет на работать на всех компьютерах в мире.
Аноним 08/05/19 Срд 10:33:41 139558553
>>1395575
Ты смотрел хоть видео которое я скинул? Там парень на рабочем примере, в реальной топ-тир компании в Яндексе, на реальной рабочей задаче, получил прирост в 100 раз по-сравнению с джавой. 10000% прирост, Карл.

На вот еще посмотри что завезут новым стандартом, ахуеешь. https://www.youtube.com/watch?v=g2iyNH2Gh1k

С++ активно развивается, быстрее чем джавазвучит иронично, к 2023 году это будет просто вынос мусора с рынка.
Аноним 08/05/19 Срд 10:35:13 139558654
Аноним 08/05/19 Срд 10:37:09 139558755
>>1395585
>На вот еще посмотри что завезут новым стандартом
Очередная хуйня для написания собственных велосипедов вместо сервисов, написанных на jvm? С++ как всегда нереально далек от современных бизнес-задач.
Аноним 08/05/19 Срд 11:13:06 139559556
>>1395587
>бизнес-задач
Бизнес-хуизнес.
Как же заебли эти кабанчики, у которых вместо логики бизнес-логика, пиздец просто.
Аноним 08/05/19 Срд 11:20:36 139560157
>>1395595
Извини, эпоха гаражных программистов и сомнительного десктоп-софта ушла.
Аноним 08/05/19 Срд 12:36:19 139562558
>>1395587
Ну давай, расскажи какие бизнес задачи решаются на джаве лучше чем на С++.
Аноним 08/05/19 Срд 12:47:18 139562859
>>1395625
Запилить прототип йоба софтины, которая решает все бизнес-задачи сводится к предсказанию будущего.
Тянуть бабло с заказчика настолько долго, на сколько это возможно.
Аноним 08/05/19 Срд 18:07:17 139578060
изображение.png (40Кб, 420x294)
420x294
>>1395575
>работать на всех компьютерах в мире
Аноним 08/05/19 Срд 18:29:16 139578461
1383427012448.gif (180Кб, 404x416)
404x416
>>1395780
>твой пик
Но ведь всё так и есть.
Аноним 08/05/19 Срд 18:30:25 139578562
>>1395780
Так-то С++ на еще больших платформах поддерживается, чем JAVA. Холивары JAVA vs C++ в 2019 году... Ну это как-то уже не смешно даже.
Аноним 08/05/19 Срд 18:33:31 139578663
Стикер (0Кб, 512x512)
512x512
Зашел я в ява тред... Не могут перекатиться к 800 посту. Даже тут тормозит все.
Аноним 08/05/19 Срд 19:16:12 139580864
>>1395786
тут у плюсов случился андефайнд бихевиор вместо переката, а ты смеешься
Аноним 08/05/19 Срд 19:17:39 139581065
Почему на c++ с stl так неприятно писать?
Всюду замудрёные шаблоны в шаблонах в шаблонах, из-за которых я не могу использовать stl, если я его не изучал, потому что никаких комментариев нигде нету, имена аргументов в методах вырвиглазные, не всегда возможно по описани что конкретно какая функция возвращает, поэтому нужно постоянно заходить на cppreference, вместо того чтобы просто наводить мышку на метод и смотреть и видеть краткую документацию.
Это норма или я чего-то не понимаю?
Аноним 08/05/19 Срд 19:19:38 139581166
Аноним 08/05/19 Срд 19:34:42 139581467
изображение.png (3Кб, 781x79)
781x79
Нахрена символьная функция возвращает инт?
Бред какой-то
Аноним 08/05/19 Срд 19:50:46 139581968
>>1395585
> на реальной рабочей задаче, получил прирост в 100 раз по-сравнению с джавой. 10000% прирост, Карл.
Некорректное сравнение. Он пользовался до этого сторонней жава-программой, которая использует нечколько общих алгоритмов, что в сумме неэффективно, вместо одно специализированного. Вот если бы он для сравнения написал бы на жаве программу с эффективной реализацией, как и на С++, тогда было бы на что смотреть.
Аноним 08/05/19 Срд 19:56:12 139582169
>>1395814
Си легаси. Очень сильно сказывается на строках и всем, что с ними связано.
Аноним 08/05/19 Срд 20:05:17 139582970
>>1395821
Ну допустим легаси, ладно, пускай си.
Но нафига мне современный компилятор пишет варнинг, когда я функцию по назначению использую?
Или
char symbol = toupper(x) - это говнокод?
Аноним 08/05/19 Срд 20:07:49 139583471
>>1395829
upd:
только щас заметил, что у ней еще и аргумент тоже int оказывается
Аноним 08/05/19 Срд 21:30:26 139588572
>>1395585
О! Опять Жабу хороним? В какой раз уже?..
Аноним 08/05/19 Срд 21:41:15 139588873
>>1395885
О! У Жаба пидора выходные? Че там как? Бизнес не давит нигде?..
Аноним 08/05/19 Срд 22:11:15 139591774
>>1395819
Он там говорит, что пытался переписать и его коллеги тоже, ничего лучше не вышло. Все корректно. 10000% прирост.

>>1395885
Так она уже мертва как несколько лет. Это вот индивид тут появился внезапно в С++ треде почему-то и начал в уши нам заливать свое говнище.
Аноним 08/05/19 Срд 22:27:29 139594375
>>1395917
> Он там говорит, что пытался переписать и его коллеги тоже, ничего лучше не вышло.
Он сказал, что другая компания пыталась сделать улучшенную версию этого логгера. То есть даже не специальный оптимальный алгоритм конкретно под ту задачу.
Аноним 08/05/19 Срд 23:55:06 139601976
>>1395888
Да не, я из Питонопараши пожаловал
Аноним 09/05/19 Чтв 16:33:44 139643677
Your account has been locked
We’ve detected some activity that violates our Microsoft Services Agreement and have locked your account.
И так с каждым аккаунтом. Это microsoft выпрашивает номер?
Аноним 09/05/19 Чтв 19:52:44 139652578
Аноним 10/05/19 Птн 10:59:07 139674679
Анон привет. Поясни за Clion, у него дебагер не понимает, что такое map??? А что тогда юзать для с++ на гей оси?
Аноним 10/05/19 Птн 11:09:29 139675180
Аноним 10/05/19 Птн 11:53:03 139676781
>>1396751
XCode это одна из самых хуевейших IDE в мире.
И это не только мое мнение смотри его рейтинг в апсторе
Аноним 10/05/19 Птн 12:18:07 139677382
>>1396767
Ну тогда енжой йор Clion.
Аноним 10/05/19 Птн 14:46:33 139693183
>>1393953
Clang address sanitizer. Больше никак. Ещё можешь создавать вектор вместо массива и передавать ссылку на вектор вместо указателя.
>>1394033
1) Скорее всего, ты показываешь не начало списка ошибок. Ошибки надо исправлять в порядке появления и запускать компилятор заново после исправления.
2) Класс и его экземпляр - разные вещи.
>>1394298
Во время защиты закроешь экран ноутбука и спросишь его, может ли он пользоваться программой. Есл++++и не может - то визуальный.
99,99999% программ имеют визуальный интерфейс (инбифо Брааль, звуковое меню и т.д.). Если твои преподы имели ввиду графический, как ты думаешь, кто выиграет? Псевдографический интерфейс - название того, что ты сделал.
>>1394529
Есть вероятность того, что в стандарт втащат ещё больше полезных фич (хотя бы модули), и плюсы будут намного лучше.
>>1394540
Потому что парк софта намного больше. Нужно писать больше червей только ради того, чтобы получить в 50 раз меньше заражений. Олсо, дырок в опенсоусном софте меньше и патчатся они быстрее.
>>1394863
char не хранит utf-8 символы (кроме ASCII). Символ в таких случаях - это строка длиной от 1 до 4 байт, и сравнивать надо, как строку.
>>1395547
Комментирую:
2:51 https://en.cppreference.com/w/cpp/io/basic_istream/readsome
3:40 нахера ему .c_str()?
3:53 функция для получения массива байт из файлы занимает одну строку, а ещё есть memory mapped file почти во всех ОС, и он есть в Бусте. Код на экране считывает не любой файл.
>>1395785
Не совсем правда. На закрытых платформах может быть Жаба, но не нативный код.
>>1395810
Это норма, но исправимая. На цппреференсе есть файлы справки для разных IDE.
>>1395829
Функция принимает в том числе EOF.
https://en.cppreference.com/w/c/string/byte/toupper
и вернёт она EOF в таком случае. Компилятор ругается на неявное сужение? Щито поделать. Можешь касты писать, ругаться не будет. Можешь именно такие предупреждения отключить.
Аноним 10/05/19 Птн 14:48:35 139693484
>>1396931
>>1395547
Олсо, лень вообще смотреть на страничку логстэша, но я так понимаю, что универсальный инструмент заменили узконаправленным.
Аноним 10/05/19 Птн 15:10:20 139695085
>>1394298
CLI - command line interface.
У тебя же полноценный интерфейс, просто он выполнен ин из псевдографики.

А вот если бы ты передавал все через аргументы запуска то это был бы CLI.
Аноним 10/05/19 Птн 15:30:18 139697486
15572211943620.jpg (210Кб, 953x893)
953x893
Ребята, что обычно используется в C++, чтобы Гуишечки-окна делать, как в Вижуал Студио?

Есть что-то своё встроенное, чтобы не тащить сторонние фреймворки вроде QT.
Аноним 10/05/19 Птн 15:41:15 139698387
>>1396974
>Есть что-то своё встроенное
Нет. В плюсах вообще есть что-то встроенное, что отвечает современным запросам общества? Используй QT, это единственный нормальный фреймворк для рендеринга красивых интерфейсов на Linux.
Аноним 10/05/19 Птн 16:35:09 139701388
Посоны, а как вы пишите большие проекты, как приступаете к ним? Тут надо для курсача написать что-то на 10+к строк, а конь не валялся.
Аноним 10/05/19 Птн 16:36:09 139701589
>>1397013
За деньги, попробуй, базарю понравится
Аноним 10/05/19 Птн 16:42:44 139702190
Аноним 10/05/19 Птн 16:49:23 139702591
image.png (227Кб, 1366x768)
1366x768
image.png (337Кб, 1366x768)
1366x768
Ньюфаг ИТТ. Не гоните ссаными тряпками. Решил начать с учебника Липпмана, который рекомендуют в шапке. Дошёл до классов, точнее, использования готовых классов. Скачал файлы, которые дополнение к учебнику. Что делать теперь? На первом скрине архив с дополнениями к учебнику и созданнный в Visual Studio 2010 проект под названием Classes. Скопировать эти файлы в папку проекта? Уже пробовал, нихуя не работает. Копировать все файлы, или только Sales_item.h, как в учебнике написано?
Аноним 10/05/19 Птн 17:02:28 139703992
>>1397025
Покажи содержимое батника. Если нам повезет, окажется, что он сам все соберет при запуске и без VS.
Энивей, тебе нужно разбить файлы на проекты в VS так, чтобы у тебя на каждый проект была ровно одна функция main. Все проекты при этом могут быть в рамках одного солюшена. Погугли как пользоваться VS.
Но лучше бы ты выложил содержимое файлов куда-нибудь, чтобы мы не гадали, как там все организовано, если ждешь от нас помощи.
Аноним 10/05/19 Птн 17:03:36 139704093
Аноним 10/05/19 Птн 17:05:26 139704494
>>1397015
Где бы только найти человека, который готов таким заняться. Мимо другой анон, который ищет чела, который за деньги напишет прогу для курсача
Аноним 10/05/19 Птн 17:16:14 139704995
image.png (246Кб, 1366x768)
1366x768
Это снова я. Перетащил все файлы из папки дополнения к учебнику (в архиве) в папку проекта. Нажал добавить файл Sales_item.h. Запустил построение. Ошибка на пике: fatal error C1083: Не удается открыть файл включение: Version_test.h: No such file or directory.
Что ещё за файл ему нужен? Нихера не понятно, откуда его брать. Как дохуя файлов в проекте. Видимо, программирование не для меня.
Аноним 10/05/19 Птн 17:16:46 139705096
>>1397025
Обычно это делается так: ты добавляешь .h и .cpp-файлы в список файлов в IDE. Что происходит дальше: при нажатии кнопки "собрать" IDE компилирует .cpp-файлы и линкует объектные файлы. Типа такого:
gcc -o a.o a.cpp
gcc -o b.o b.cpp
gcc a.o b.o
На третьей строчке получается запускаемый экзешник. Если в b.cpp используется класс (или что угодно другое) определённое в a.cpp, то в b.cpp должен быть включён соответствующий a.h , созданный автором a.cpp .
Липмана не читал.
10/05/19 Птн 17:18:47 139705197
>>1397044
Могу я попробовать.
Аноним 10/05/19 Птн 17:20:16 139705498
image.png (199Кб, 1366x768)
1366x768
Аноним 10/05/19 Птн 17:21:55 139705599
image.png (199Кб, 1366x768)
1366x768
Аноним 10/05/19 Птн 17:29:16 1397061100
Пиздец, живу в ебенях, вышка за несколько км, мотив с трудом выдаёт мегабит. Ещё и некроноут лагает 2Гб оперативы. Мамка орёт из-за того, что за компом сижу. Брат младший пиздит не умолкая. В голове каша, запутался во всех этих файлах. Видимо придётся оставить затею изучить плюсы. Лучше дворником.
Аноним 10/05/19 Птн 17:37:01 1397073101
>>1397061
Найди этот ебучий Version_tests.h и добавь его в солюшен, как и все остальное. Если его нет в папке, значит он лежит где-то в другой секции дополнений к книге. Или попробуй удалить его из кода. А вообще, я думаю, тебе сначала стоит изучить, как вообще работает компиляция и линковка в С-языках. Про операционные системы почитать и все такое. Либо вкатывайся в веб и интерпретируемые языки, туда порог вхождения ниже и платят больше.
Аноним 10/05/19 Птн 17:46:37 1397084102
>>1397073
>тебе сначала стоит изучить, как вообще работает компиляция и линковка в С-языках. Про операционные системы почитать и все такое
Какую литературу посоветуешь?
Аноним 10/05/19 Птн 17:58:07 1397096103
image.png (137Кб, 1366x768)
1366x768
>>1397073
Спасибо огромное, анон. Нашёл ебучий Version_tests.h. Он был в корневом каталоге архива. Буду впредь внимательнее, чтобы не доёбывать сеньоров 300ккк/нсек такой ерундой.
Аноним 10/05/19 Птн 17:59:17 1397097104
>>1397025
>>1397054
У тебя в пункте 1.20 написано прямо, что тебе надо сделать.
Аноним 10/05/19 Птн 18:06:16 1397107105
10/05/19 Птн 18:10:01 1397109106
>>1397107
На почту напиши, там спишемся.
Аноним 10/05/19 Птн 18:39:16 1397136107
>>1396931
> Это норма, но исправимая. На цппреференсе есть файлы справки для разных IDE.
А где? Я что-то не могу найти, только архив с оффлайн версией сайта нашёл.
Аноним 10/05/19 Птн 18:44:30 1397139108
>>1397049
Что за говнище на скриншоте? Ты ебанутый? Скачивать visual studio 2019
Аноним 10/05/19 Птн 19:02:13 1397150109
Аноним 10/05/19 Птн 21:31:58 1397215110
>>1397025
Могу тебе сказать, что вот это вот упражнение - это практически единственное место на всю книгу у него, где его исходники нужно включать к себе в проект.

Дальше достаточно руками набивать то, что в книге пишут. В исходники только заглядывать в особо мутных случаях.
Аноним 10/05/19 Птн 21:32:30 1397216111
изображение.png (9Кб, 634x219)
634x219
Почему я не могу сделать вот так?
Если указать например int вместо Т то оно работает.
Аноним 10/05/19 Птн 21:38:39 1397221112
>>1397215
Ну тогда всё нормально. Код в книге достаточно хорошо разжёван, чтобы не вызывать трудностей. Но я понял, что помимо изучения языка надо научиться работать со средой разработки, понимать структуру проекта, почитать про линковку и компиляцию.
Аноним 10/05/19 Птн 21:45:14 1397225113
сап, киньте линк, или подскажите как гуглить написание графического интефрейса в qt без использования встроенного дизайнера, тоесть просто руками написать окно, которое вывело бы электрическую цепь, и при вводе данных и нажатии на кнопку, вывело бы решение, если не смогу подключить LaTex, тогда просто текстом.
Аноним 10/05/19 Птн 21:52:04 1397230114
>>1396983
А как насчёт 2D/3D графики? На чём обычно сейчас графику в плюсиках делают?
Аноним 10/05/19 Птн 21:52:54 1397231115
Аноним 10/05/19 Птн 21:56:00 1397233116
>>1397231
>VULKAN
Это API для новых игровых видеокарт (управление железякой), а не фреймворк для рисования графики (набор готовых библиотек, из которых ты складываешь, как из кирпичей графику).
Аноним 10/05/19 Птн 21:56:41 1397234117
Аноним 10/05/19 Птн 21:58:10 1397236118
Аноним 10/05/19 Птн 22:16:02 1397239119
Аноним 11/05/19 Суб 00:01:41 1397280120
Аноним 11/05/19 Суб 00:17:20 1397288121
>>1397230
зависит от задачи. 2d - Qt, SDL, SFML.
3d - дохуя разных движков.
Аноним 11/05/19 Суб 00:40:43 1397304122
>>1397288
встроенное что есть, ничего?
Аноним 11/05/19 Суб 00:48:34 1397310123
>>1397216
Ну неужели никто не знает?
Аноним 11/05/19 Суб 00:53:04 1397316124
>>1397288
sdl и sfml - это движки для игр, на которых можно и GUI делать, а qt - просто библиотека для GUI, приложения шлёпать.
Не окажется у тебя поддержки у железа этих sdl и sfml, типа опенжл там какой-нибудь и ещё что-то, и всё пц, никто твоих гуишечек уже не запустит, qt - другое дело.

Я помню, разбирался и пришёл к выводу, что SFML как бы вообще не нужен, сразу учишь и используешь SDL и всё и SDL вообще топ и лучшее, что есть.
После него идут уже полноценные игровые движки с полными наборами со специальными IDE для игроделания итд.

Короче, если ты делаешь не игру, а просто графику некоторую небольшую, то лучше брать SDL.

Но я читал, что компании-игроделки пользуют не SDL для менюшечек.
Аноним 11/05/19 Суб 00:57:41 1397319125
>>1397316
> Но я читал, что компании-игроделки пользуют не SDL для менюшечек.
Они используют ue4.
Аноним 11/05/19 Суб 01:21:38 1397325126
>>1397319
нет речь не про полноценные игровые движки, а про эти наборы библиотек.
Аноним 11/05/19 Суб 01:28:55 1397328127
Аноним 11/05/19 Суб 02:05:54 1397340128
Аноним 11/05/19 Суб 02:08:20 1397341129
15572211943620.jpg (210Кб, 953x893)
953x893
Кстати, как задействовать видеокарту для увеличения быстродействия программ вообще?

И есть ли автоматика, которая сама разберётся, что лучше на видяхе обрабатывать, а что на ЦП?
Аноним 11/05/19 Суб 02:35:23 1397354130
изображение.png (5Кб, 500x116)
500x116
>>1397310
Тебе надо явно обозначить с помощью typename, что ты вектору в <> передаешь именно тип до момента создания экземпляра неизвестно, что у тебя там - тип или что-то другое.
Аноним 11/05/19 Суб 09:49:20 1397388131
image.png (1190Кб, 849x931)
849x931
>>1395547
>С++ пишет всего несколько человек
На пиках "несколько" человек?
Аноним 11/05/19 Суб 11:41:22 1397435132
В консоли Эклипса пиздец вместо русского, как починить, не меняя кодировку Воркспейса?
Аноним 11/05/19 Суб 14:05:07 1397558133
>>1395547
>>1397388
Он жн говорит что очень давно писало 20 человек, а сейчас 180, так что на пиках наверное даже ещё не все.
Аноним 11/05/19 Суб 15:38:57 1397615134
>>1395547
Я то по наивности думал что плюсы это переусложненная параша которую уже ни один человек не способен понять в принципе, а оказывается еще больше людей надо чтобы еще больше говна натащили, ну ОК.
Аноним 11/05/19 Суб 15:52:54 1397627135
Аноним 11/05/19 Суб 16:16:23 1397654136
>>1397615
Реально не понимаю, почему кресты считают переусложненными. Они сложные, когда вы хотите сделать что-то реально сложное, например написать БД, какой-нибудь серьезный инструмент типа фотошопа или бекпропагатор. В тех задачах, для которых обычно используют питон или джаву, то есть круд написать или веб-сервис простенький, они просто будут чуть более вербозными.
Аноним 11/05/19 Суб 17:08:22 1397687137
>>1397654
Поддерживаемость
Переносимость
Расширяемость
Тут кресты заметно сосут и у жабы и у питона
Аноним 11/05/19 Суб 17:16:46 1397695138
Побеждал кто-нибудь не работающий дебаггер на map и set в clion?
Аноним 11/05/19 Суб 17:26:50 1397708139
>>1397687
А поподробнее можно?
Аноним 11/05/19 Суб 17:39:21 1397728140
>>1397708
>Поддерживаемость
Кресты невозможно читать и писать. Не имея опыта, ты будешь стрелять себе в ногу каждую строчку. Будучи уверенным мидлом и синьером, будешь стрелять себе в ногу каждые несколько строк. Даже имея 20 лет опыта, все равно будешь стрелять в ногу время от времени. Люди не машины; с годами опыта прибавляется, но внимательность падает, а ошибиться в крестах очень легко.
>Переносимость
Необходимость компилировать код под каждую платформу.
Аноним 11/05/19 Суб 17:45:20 1397736141
>>1397615
Быдлокодить на плюсах не сложнее чем на питоне
Разрабатывать что-либо - абсолютно другой экспириенс
Аноним 11/05/19 Суб 17:51:16 1397747142
>>1397654
Они наплодили очень много лишних сущностей и правил чтобы легаси говно работало. А сложность по определению как раз напрямую зависит от количества сущностей.
Вприницпе, писать можно и не зная абсолютно всего, это так. Но вот верно говорят - в С++ ты платишь только за то что используешь. Но не только производительностью, а ещё и своей ногой, потому что будешь постоянно отстреливать её, натыкаясь на очередные хитрые правила и новый смысл каких-то известных тебе понятий, когда они в другом контексте используются. Поэтому с++ это единственный известный мне язык, который реально не так уж просто изучить, это потребует заметное количество усилий и времени.
Аноним 11/05/19 Суб 17:55:30 1397754143
>>1397747
Да нет, даже не идеальный с++ код довольно быстр и неплох
Аноним 11/05/19 Суб 17:56:05 1397756144
>>1397728
Я все еще жду чего нибудь конкретного, потому что это вообще какое то совсем беспредметное ко-ко-ко-кукареку
>Кресты невозможно читать и писать.
Да ты шо
Аноним 11/05/19 Суб 18:00:25 1397758145
>>1397695
Вижуал студия, например
Аноним 11/05/19 Суб 18:05:29 1397761146
>>1397754
Да это само собой, я об этом и говорю - можно действительно писать код имея лишь самые базовые знания с++. И с точки зрения производительности никоим образом плохим не будет.
Но если так уходить в крайность - то итоге писать ты будешь писать на С++ как на Си. Поэтому если уж решил писать на С++ - видимо тебе надо использовать какие-то возможности С++, которых в Си нет, чтобы сам процесс написания кода стал быстрее, в этом его и предназначение как бы. Если ты С++ наизусть знаешь то это не проблема, а вот если нет - тогда ты гарантированно стабильно будешь натыкаться на какую-то очередную тонкость, о которой раньше ты не знал. И иногда тебе ещё придётся охуесть чтобы выяснить что это такая за тонкость и где аконкретно и что не так в твоем коде.
В других языках программирования такого намного меньше.
Аноним 11/05/19 Суб 18:44:22 1397779147
>I thought ‘I wonder what would happen, if there were a language so complicated, so difficult to learn, that nobody would ever be able to swamp the market with programmers?'
Аноним 11/05/19 Суб 18:51:03 1397781148
>>1392196 (OP)
из шапки
>Роберт Седжвик Фундаментальные алгоритмы на C++ 2001
>Стандартный курс алгоритмов с примерами на C++. Для его чтения не нужно знать мертвые языки, в отличие от этого вашего Кнута

Есть смысл читать это в 2019? Или лучше взять си-версию?
Аноним 11/05/19 Суб 19:01:54 1397789149
>>1397225
Куча примеров вместе с Qt ставится (папка examples), они там почти все без формочек, только плюсами написаны.
>>1397341
Если вкратце, то гугли OpenCL. Написать в коде "вот это сделай на ГПУ" невозможно.
>>1397728
>Необходимость компилировать код под каждую платформу.
Это не переносимость.
>>1397756
например:
- необходима пересборка после изменения layout класса, никакой ошибки не будет, просто программа будет падать
- cin по-умолчанию текстовый (важно для винды и макоси)
- cin привязан к stdin, из-за чего ввод медленный
- различия между vector<int>(5) и vector<int>{5}
- cout<<int8_t(5) выведет не число 5 с большой вероятностью
- setprecision принимает отнюдь не любое число
- ссылку на локальную переменную люди возвращают иногда, так как считают, что раз const T& huy=T{};продлевает жизнь временного значения, то и при возврате из функции будет то же самое. Я даже на стаке видел опытного человека, который так считал.
- статические переменные в шаблонах делаются на каждый инстанс
- локальные интегральные переменные могут не инициализироваться, глобальные инициализируются всегда
- циклы при использовании shared_ptr. В языке нет инструмента для проверки отсутствия циклов
- функция, не возвращающая значение, которое она должна вернуть, верна. Ты его случайно не вернул и используешь, а там мусор.

Многие проблемы можно решить настройкой предупреждения и Werror, но не все.
Аноним 11/05/19 Суб 19:06:37 1397791150
>>1397789
>Куча примеров вместе с Qt ставится (папка examples), они там почти все без формочек, только плюсами написаны.
Ну и примеры эти документированы, на сайте и прямо в QtCreator.
Аноним 11/05/19 Суб 19:09:05 1397792151
>>1397781
Кормена лучше возьми.
Аноним 11/05/19 Суб 19:29:12 1397811152
>>1397758
Вижуал студия даёт на клыка моей Макоси. Неужели тут никто с яблоками не дрюкает кресты?
Аноним 11/05/19 Суб 19:41:22 1397819153
>>1392196 (OP)
Почему синтаксис плюсов похож на лютою криптографическую срань? почему никто ничего с этим не делает? и как хоть кто-то то понимает?
Аноним 11/05/19 Суб 19:47:37 1397823154
>>1397819
Единственная криптографическая срань в плюсах - это типы. Мой любимый - функция, возвращающая указатель на массив. Что ещё кроме них?
Аноним 11/05/19 Суб 20:31:57 1397877155
>>1397811
Кресты - язык для свитерков и прочих любителей подвигать байтами. Как думаешь, кто из них пишет на маке или под мак?
Аноним 11/05/19 Суб 22:57:16 1398028156
15572211943620.jpg (210Кб, 953x893)
953x893
>>1397789

>Если вкратце, то гугли OpenCL. Написать в коде "вот это сделай на ГПУ" невозможно.

Пиздос, как это невозможно?
Аноним 12/05/19 Вск 00:20:44 1398076157
Как правильно сложить почленно два 2d вектора? Пока вижу только возможность с двумя циклами.
Аноним 12/05/19 Вск 00:23:41 1398077158
>>1398076
Зачем там два цикла?
Аноним 12/05/19 Вск 00:37:25 1398080159
Аноним 12/05/19 Вск 00:51:29 1398086160
>>1398077
по строкам и по столбцам, лол

>>1398080
не очень понимаю как применить tranform к вектору из векторов, но спасибо за наводку
Аноним 12/05/19 Вск 00:56:16 1398087161
>>1398086
наверное можно передавать в трансформ лямбду а внутри лямбды уже обычный тронсформ с плюсом я лучший программист в мире.
Аноним 12/05/19 Вск 00:58:59 1398090162
>>1398086
Я почему-то подумал, что два 1d вектора, заглючило. Два цикла как по мне норм решение.
Аноним 12/05/19 Вск 01:02:56 1398092163
>>1397728
>>Переносимость
>Необходимость компилировать код под каждую платформу.
Так это наоборот переносимость как раз и есть.
ну первый кукарек вроде раскрыли более менее, а
>Расширяемость
куда то проебалась, что это такое?
Аноним 12/05/19 Вск 02:34:18 1398133164
>>1397388
На пиках все кто участвует в конференциях, а именно КОД крестов пишет по 1 человеку под каждую ось, ядро тоже написано одним человеком.
Аноним 12/05/19 Вск 03:38:10 1398140165
Аноним 12/05/19 Вск 04:15:20 1398144166
>>1397789
Какой сраный ОпенСЛ там, поехавший?
CUDA же!
Аноним 12/05/19 Вск 06:44:38 1398169167
346-3462456pls-[...].png (102Кб, 820x514)
820x514
>>1398028
>>1397341

> когда лезешь в фф-тред, чтобы проверить таймштамп пикчи, и он совпадает
Аноним 12/05/19 Вск 07:47:38 1398201168
>>1392196 (OP)
Если я перейду с std::thread и std::mutex на нативные линуксовые либы, быстрее будет работать? Насколько?
Аноним 12/05/19 Вск 07:48:32 1398202169
Помогите найти:

C++ для чайников. 7-е издание. Дэвис С. на русском на халяву, полную книгу.
Аноним 12/05/19 Вск 08:11:33 1398205170
Деление с остатком:
-9 % -13
-9 = 1 x (-13) + 4

Откуда мы вязли, что там 1 должен быть?
Аноним 12/05/19 Вск 08:35:45 1398210171
Аноним 12/05/19 Вск 08:43:40 1398212172
>>1398210
Частное округляется до большего.
В твоём примере:
ceil( (-9) / (-13) ) = ceil(0.69230769230769230769230769230769) = 1
( ( -9 ) - ( 1 × (-13) ) ) = (-9) - (-13) = (-9) + 13 = 13 - 9 = 4 - остаток.
>>1398210
Из примера 4:
ceil( (-15) / (-7) ) = ceil(2.1428571428571428571428571428571) = 3
( ( -15 ) - ( 3 × (-7) ) ) = (-15) - (-21) = (-15) + 21 = 21 - 15 = 6 - остаток.

Аноним 12/05/19 Вск 09:21:38 1398218173
Аноним 12/05/19 Вск 13:07:48 1398262174
Сап.Как сделать так,чтобы фишки нард могли перемещаться только в определённые места("лунки" или как их там обозвать)?VCL; фишки и поле-image
Не обоссывайте,я сильно ньюфаг
Аноним 12/05/19 Вск 13:23:32 1398269175
>>1398201
libc++ реализует лок мьютекса просто через посиксовый мьютекс:
https://android.googlesource.com/platform/ndk/+/5de42e6621b3d0131472c3f8838b7f0ccf3e8963/sources/cxx-stl/llvm-libc++/libcxx/src/mutex.cpp#27
Так что выигрыша не будет никакого (только если ты не считаешь прямой вызов одной функции чем-то серьёзным).
На винде я помню была давно какая-то лажа, что простой CRITICAL_SECTION работал раза в 2-3 быстрее std::mutex. Сейчас исправили вроде.
Аноним 12/05/19 Вск 14:49:32 1398323176
>>1398262
Когда фишка отпускается чекай ее позицию. Если она раядом какой-то лункой то перемещей ее в лунку, если нет то возращай в исходное положение.
Аноним 12/05/19 Вск 15:00:23 1398333177
>>1398218
Ты идиот?
Максимальная производительность на CUDA, а не на левых дерьмовых да ещё и мусороопенсорсных либах, придура.
Аноним 12/05/19 Вск 15:17:00 1398342178
>>1398333
Ну это смотря что у тебя в приоритете. Если это числодробилка, которую ты будешь запускать на своем вполне определенном железе (или даже покупать железо специально под нее), то CUDA лучше, ибо быстрее на несколько десятков процентов. А если ты хочешь ускорить распространяемый тобой софт, то OpenCL, вероятно, лучше, ибо вычисления на GPU все равно не будут боттлнеком, а ебли с настройкой под разные платформы будет меньше.
Аноним 12/05/19 Вск 15:28:22 1398350179
>>1393199
>don't use exceptions
Сразу нахуй. Исключения это лучшее из всего, что есть в C++ поверх C, даже важнее шаблонов, наверное. Копипаст без шаблонов еще можно как-то читать, но когда в коде начинается возврат ошибок с проверкой на каждом уровне, то это полный пиздец. По сути, сишники переизобретают весь механизм распространения исключений, только отображаемый вперемешку с пользовательским кодом и потенциально забагованный.
Аноним 12/05/19 Вск 15:45:26 1398368180
Аноним 12/05/19 Вск 15:54:43 1398374181
>>1398323
А откуда выковыривать координаты?
Аноним 12/05/19 Вск 16:55:30 1398400182
Сап. Зачем нужен switch? Вернее. В чем его преимущество перед if? Я, конечно, нуфаг, но не могу придумать ситуаций, где if был бы менее лаконичным и удобным.
Аноним 12/05/19 Вск 17:10:52 1398409183
>>1398400
Явное указание замысла. Видя свитч ты сразу понимаешь что у тебя есть одно выражение, по результату которого выполняется действие. Тогда как с простыней ифов тебе нужно проверить условие каждого ифа, чтобы убедится что это действительно так. Ну и годные компиляторы могут оптимизировать свитчи (строить на его основе branch table, будет выполняться меньше сравнений чем при использовании ифов), но это такое. Главное преимущество в том что сразу видно то происходит. Явное лучше неявного, все дела.
Есть еще разная хуйня типа устройства Даффа которую на ифах сложно постоить, но не стоит вскрывать эту тему
Аноним 12/05/19 Вск 20:56:44 1398617184
image.png (23Кб, 330x375)
330x375
logic.png (10Кб, 661x286)
661x286
>>1392196 (OP)
помогите пожалуйста разобраться в теме сокетов.
Допустим у меня есть одна программа(п1), которая делает обработку информации. И есть вторая программа(п2), которая должна получать из этой первой программы эту информацию. Их нужно соединить к помощью сокетов, где п1 это сервер, а п2 это клиент.
Мне нужно соединить эти две программы. Для сервера я нашёл следующий код
https://gist.github.com/codehoose/020c6213f481aee76ea9b096acaddfaf#file-bbtcpserver-cpp

и немного его преобразовал, всё создание сервера обернул в функцию и запустил эту функцию в std::thread в main первой
программы, а для клиента я использую qtcpsocket.
В первой программе информация может поменяться, но как в этом случае сообщить об этом второй программе?
То есть наверное нужно создать в первой программе класс-обертку для сервера, который работал бы асинхронно с остальной логикой программы? Подскажите пожалуйста, может быть есть пример такого класса для сервера?
Аноним 12/05/19 Вск 21:52:27 1398652185
>>1398617
> рмация может поменяться, но как в этом случае сообщить об этом второй прог
Не обрываешь соединение после связи. Тоесть клиент коннектится и потом сидит и слушает. Сервак отсылает новую инфу когда она появляется.
Аноним 12/05/19 Вск 22:04:40 1398667186
>>1398652
вот мой код для сервера
https://pastebin.com/rzRDCjCB
я не понимаю, как мне в случае изменения данных на сервере переслать на клиент новую информацию, если мой сервер работает в отдельной функции в отдельном треде? как мне попасть в while (true) serverFunction()?
Аноним 12/05/19 Вск 22:51:01 1398687187
>>1398667
Ты туда не попадаешь. Создаешь очередь сообщений для пользователей. Когда твой сервер обновляет данные то он формирует сообщение для пользователя с обновленными данными и помещает его в очередь. Дальше у тебя есть джва варианта. Простой и неправильный это внутри while (true) ты на каждом цикле чекаешь эту очередь. Если она не пустая, то вытаскиваешь и отправляешь сообщение. Правильный это тоже самое, только если очередь пустая то ты засыпаешь тред с помощью std::condition_variable (вызываешь std::condition_variable::wait() в треде), а когда в очередь добавляют новое сообщение то будишь с помощью std::condition_variable::notify_one() в той функции что обновляет очередь. По необходимости обмызываешся локами (мьютексами). Асло сокет должен быть неблокирующим, иначе у тебя синхронный сервер. И обрабатывай результат recv, обрывай коннект на ошибках.
Аноним 12/05/19 Вск 23:39:22 1398719188
>>1398687
>очередь сообщений для пользователей
то есть std::queue?
> Простой и неправильный это внутри while (true) ты на каждом цикле чекаешь эту очередь
Почему такое решение будет неправильным?

>ты засыпаешь тред с помощью std::condition_variable (вызываешь std::condition_variable::wait() в треде), а когда в очередь добавляют новое сообщение то будишь с помощью std::condition_variable::notify_one() в той функции что обновляет очередь
я не совсем понимаю, что тут происходит. while (true) всё равно остаётся? std::condition_variable::wait() вызывается в serverFunction()?
Аноним 12/05/19 Вск 23:44:09 1398729189
>>1398719
>Почему такое решение будет неправильным?
Это будет так называемый busy waiting. В большинстве случаев он неэффективен и заставляет напрасно крутиться процессор, пока он мог быть занят другими полезными вещами.
condition_variable позволит треду заблокироваться, пока в очередь действительно что-то не придёт.
Мимопроходил
Аноним 12/05/19 Вск 23:46:48 1398740190
>>1398719
> Почему такое решение будет неправильным?
Потому что у тебя тред будет постоянно крутиться отжирая ресурсы. Конечно если туда добавить задержек (например усыплять тред на миллисекунду на каждой итерации, или добавить таймаут в recv, если это возможно) то затраты будут небольшими но все равно это не красиво.
> std::condition_variable::wait() вызывается в serverFunction()?
Да. При этом тред уснет пока ты его не разбудишь при обновлении данных (вызовом notify_one()).
Аноним 13/05/19 Пнд 00:05:54 1398769191
>>1398740
> При этом тред уснет
это значит что сервер не будет работать? То есть к серверу нельзя будет подключиться в это время?
вот код, который используется в функции в отдельном треде
https://gist.github.com/codehoose/020c6213f481aee76ea9b096acaddfaf
в каком месте нужно добавить std::condition_variable::wait()?
Аноним 13/05/19 Пнд 00:19:32 1398777192
>>1398769
> в каком месте нужно добавить std::condition_variable::wait()?
Там где ты провенряешь очередь сообщений и замечаешь что она пуста.
Аноним 13/05/19 Пнд 01:09:09 1398798193
>>1398342
Слушай, зеро, твой OpenCL - в сравнении с CUDA в плане производительности, это как Java сравнить с С.

"Зато кратковременность." Ооо...

ОпенСЛ уже в 2-5 с лишним раза медленней работает на новых видеокартах, а дальше ситуация всё больше улучшается в сторону CUDA.

https://devtalk.nvidia.com/default/topic/1029272/significant-speed-gap-between-cuda-and-opencl-how-to-debug-/
Аноним 13/05/19 Пнд 10:53:03 1398883194
>>1398798
Nvidia душит OpenCL, чтобы производителей был фактически выбор
1. Писать только под CUDA и лочиться на нвидивские карточки
2. Писать и под CUDA и под OpenCL, чтобы владельцы нвидии использовали CUDA, а владельцы амуде и интел использовали OpenCL.
Естественно первый вариант проще с точки зрения разраба и обещает много денег nvidia.
Аноним 13/05/19 Пнд 10:54:01 1398884195
>>1398798
Наверное потому что Нвидиа специально гимпит реализацию OpenCL, чтобы все переходили на куду? Какую последнюю версию поддерживает Nvidia? 1.2, или за последние годы что-то поменялось?
Аноним 13/05/19 Пнд 17:50:12 1399126196
Вот знаю я С++, ну и что? Куда мне развиваться-то теперь? Плюсы люблю, освоил их так сказать, инструментом владею. А прикладывать его куда? Какие есть специализации у крестовиков?
Аноним 13/05/19 Пнд 17:59:10 1399133197
>>1399126
Можешь лепить сайты.
Аноним 13/05/19 Пнд 18:00:02 1399135198
>>1399133
На плюсах сайты не лепят.
Аноним 13/05/19 Пнд 18:02:42 1399137199
>>1399133
Ну серьёзно, что мне качать дальше? Какую ветку?
Аноним 13/05/19 Пнд 19:46:04 1399211200
>>1399137
Открывай hh и смотри что в понравившихся вакансиях требуют.
Аноним 13/05/19 Пнд 20:43:59 1399248201
>>1399126
>Вот знаю я С++
Уверен в этом? Стандарты 11/14/17 на зубок отскакивают? Пишешь современный код?
Аноним 13/05/19 Пнд 21:06:16 1399262202
>>1399126
Ты опоздал лет на 10, сейчас балом правят языки мобилок и веба: джава (и все остальное на jvm), джаваскрипт, питон, го.
Аноним 13/05/19 Пнд 21:06:59 1399263203
15575670727710.gif (615Кб, 376x488)
376x488
>>1399211
>что в понравившихся вакансиях требуют
опыт работы
Аноним 13/05/19 Пнд 21:59:06 1399301204
>>1398400
конечные автоматы удобно делать (кто ими занимается) Просто блять переходишь в нужное состояние. Логично и естественно. Мне в питуховене этого не хватает. Если вася сосет хуй, то он пидор.
Аноним 13/05/19 Пнд 22:27:04 1399316205
>>1399301
В пистоне есть

{ pidor: sosat_hui,
coder: sosat_jopu }[vasya]()

И это нормальная практика
Аноним 13/05/19 Пнд 23:52:29 1399383206
>>1399301
Прочитал сначала "конченые автоматы"
Аноним 14/05/19 Втр 00:42:29 1399431207
изображение.png (2Кб, 362x117)
362x117
Ребятки, а как мне передать в функцию файл по имени переменной?
Аноним 14/05/19 Втр 02:47:26 1399461208
>>1399316
Змеедавы пропагандируют, мол, для всего должен быть единственный явный способ, а сами создают КОНТЕЙНЕР с одноразовым содержимым для ветвления, лол. Это костыль уровня Duff's device, только без ускорения.
Аноним 14/05/19 Втр 02:49:24 1399463209
>>1399431
> func без прототипа
Телепат компилируется, ожидайте.
Аноним 14/05/19 Втр 03:36:19 1399471210
Ну что, осилил я с большего learncpp, можно считать, что я знаю кор? Куда теперь-то?
Аноним 14/05/19 Втр 07:45:56 1399499211
Аноним 14/05/19 Втр 12:33:32 1399642212
>>1398884
Давайте в суд на них подадидим.
Аноним 14/05/19 Втр 13:26:08 1399671213
>>1399431
по ссылке, стримы нельзя копировать
Аноним 14/05/19 Втр 14:17:07 1399695214
>>1399431
void functsiya(vhfpotok& vvod, vyhfpotok& vyvod);

int glavnaya()
{
vhfpotok vvod("vvod.dvoichny, ios::dvoichny);
vyhfpotok vyvod("vyvod.dvoichny, ios::dvoichny);
functsiya(vvod, vyvod);
}
Аноним 14/05/19 Втр 23:15:33 1400091215
Аноним 14/05/19 Втр 23:45:09 1400132216
>>1399248
Уверен, отскакивают, пишу, а толку.
>>1399262
Не ну есть же там всякие эмбеддед, гейдев, микроконтроллеры.
Аноним 14/05/19 Втр 23:47:42 1400135217
>>1400132
Например точно знаю, что мозга для мерседесов на плюсах(как раз современных) пишутся. Ну так че, дорог так много, а я один, надо что-то одно выбрать и прокачивать, спецом становиться, бабки получать, толку от моих знаний крестов одних без знания области применения?
Аноним 15/05/19 Срд 00:17:40 1400155218
изображение.png (17Кб, 609x388)
609x388
Плюсы, накидайте за щчёку книг по Windows Forms. Очень сильно хочу освоить эту хуню, на сколько там сложно делать анимации ?
Аноним 15/05/19 Срд 23:50:12 1400874219
Плюсаны, подскажите, в каких случаях полезно юзать throw без параметров в блоке catch()?
Читал об этом, что из-за этого исключение не обрабатывается до конца и идет выше по стеку до другого исключения, т.е. в случаях, когда есть несколько исключений и мы конкретно не знаем, какое поймали?
Аноним 16/05/19 Чтв 02:02:56 1400929220
>>1400874
Например, если ты освобождаешь ресурсы, которые выделились в try-блоке и не завернуты в объект с деструктором. Или если ты только часть обработки делаешь, например, фиксишь обосравшиеся локальные объекты, а потом исключение уходит в глобальный обработчик ошибок, который ничего не исправляет, но зато подробно запишет все в лог.
Аноним 16/05/19 Чтв 02:45:28 1400937221
>>1400874
throw без параметров либо пробрасывает дальше текущее исключение либо делает терминате, если текущего нет.
Аноним 16/05/19 Чтв 10:33:29 1401030222
Аноним 16/05/19 Чтв 14:05:32 1401120223
cpuusage.png (78Кб, 1202x548)
1202x548
Помогите плз. Я ещё только в процессе освоения C++. Не бейте сильно. Я написал своё первое оконное приложение. Ничего особенного - только дефолтное окошко из учебника для начинающих. Никаких полезных вычислений там нет. Просто голое окошко. Я не нонимаю, почему у моего приложения такое высокое потребление ЦП (как это видно в Process Explorer)? Я в шоке. Даже Хром со всеми своими вкладками столько не потребляет. Как так? Как, вообще, можно повлиять на потребление ЦП?
Аноним 16/05/19 Чтв 15:24:08 1401163224
>>1401120
а код где покажешь? телепатически декомпилировать программу по скриншоту?
Аноним 16/05/19 Чтв 15:29:53 1401167225
proxy.duckduckg[...].jpeg (65Кб, 550x412)
550x412
Аноним 16/05/19 Чтв 15:50:20 1401180226
Аноним 16/05/19 Чтв 15:57:37 1401183227
>>1401180
If there's anything I would change, it's to use GetMessage instead of PeakMessage for the message pump. This will potentially improve performance and keep the CPU utilization down. There's a demo project that uses this approach in this forum post. The post is old, but the concept of message pump is still the same.

ванга
Аноним 16/05/19 Чтв 18:38:09 1401312228
бля, я только что перекат из 86-го запилил, а тут уже оказывается
Аноним 16/05/19 Чтв 21:10:14 1401422229
Че там с концептами, крестухи? К 23 году завезут?
Аноним 16/05/19 Чтв 23:06:11 1401511230
>>1401167
Какой-то сборник офигительных советов. У меня, ведь, просто окно. Мне не нужен максимально производительный рендер.
Как сделать "wait for messages in a blocking way"?

>>1401183
А делать-то мне что? Как снизить потребление ЦП?
Я попробовал переделать цикл обработки сообщений с использованием PeakMessage. Не помогло.
Аноним 16/05/19 Чтв 23:15:29 1401518231
>>1401511
Написано же усыпляй по таймеру. Запоминаешь время. Формируешь кадр. Смотришь сколько времени прошло (с момента запоминания) - вычитаешь из 16 миллисекунд (и сколько тебе там фпс надо) и засыпаешь на это время. Когда просыпаешся отрисовываешь подготовленный кадр и начинаешь все заново (с запоминания времени). На самом деле там ебенячая куча подводных камней (с тем чтобы синхронизировать просчет кадра и отрисовку), но пока можно не трогать. А вообще тебе должна помочь простая задержка на 1 миллисекунду на каждой итерации твоего цикла, это если ты не хочешь изъебываться.
"wait for messages in a blocking way" означает что у тебя есть какая-то очерель в которую помещаются сообщения, а тред который их обрабатывает не крутится постоянно, а в случае если очередь пуста засыпает. А когда там появляются сообщения то просыпается и обрабатывает. Можно сделать с помощью std::condition_variable.
Аноним 16/05/19 Чтв 23:28:29 1401521232
>>1401518
>Формируешь кадр
Какой кадр? У меня клиентская область пустая. Потом, может, добавлю каких-нибудь WinAPI-control'ов.
Аноним 16/05/19 Чтв 23:39:47 1401526233
Как же не хочется возиться с STL. Вот в анрил енжине есть своя удобная стандартная библиотека с разными структурами данных. Может есть ещё какой-нибудь заменитель стандартной библиотеке?
Аноним 16/05/19 Чтв 23:42:49 1401528234
>>1401518
>усыпляй по таймеру
Это считается хорошей практикой? Усыплять главный тред окна? Он, ведь, обрабатывает асинхронные (nonqueued) сообщения.
Аноним 17/05/19 Птн 00:03:54 1401540235
>>1401526
Просто перекатывайся в заменитель C++.
Аноним 17/05/19 Птн 00:11:55 1401544236
>>1401528
Когда треду нечего делать то он должен усыпать и давать возможность спокойно работать тем кому есть что делать. Понятно что таймер это для предсказуемых вариантов (тебе каждые 16 миллисекунд нужно обновлять инфу). Если нужно резко реагировать на сообщения то там используют какие-то прерывания или подобные технологии чтобы будить тред.
Аноним 17/05/19 Птн 00:14:44 1401545237
>>1401540
А вот с этого места поподробнее.
Аноним 17/05/19 Птн 00:19:59 1401548238
Есть расчетная программа вида куча данных -> вывод табличкой, которая нужна в удаленном месте. В данный момент работает все через repl.it и оче неудобно. Как минимальными усилиями запилить подобие интерфейса, чтобы запускать с телефона?
Аноним 17/05/19 Птн 02:50:34 1401609239
У C нет нормального ООП?
А без него не сделать большой проект в одиночку?
Аноним 17/05/19 Птн 08:54:19 1401682240
Аноним 17/05/19 Птн 13:22:30 1401768241
Аноним 17/05/19 Птн 13:27:16 1401771242
Стикер (0Кб, 512x512)
512x512
>>1401682
Какой же С++ ахуенный становится, к 2025 будет конфеткой. А как там джава развивается?
Аноним 17/05/19 Птн 13:28:45 1401772243
Стикер (0Кб, 512x512)
512x512
>>1401609
С не поддерживает ООП. Смотря что за проект и что ты подразумеваешь под большим.
Аноним 17/05/19 Птн 13:31:43 1401776244
>>1401540
Какой?
Jai (ещё не вышел, может получиться opinionated хренью одного парня, который возомнил себя богом)?
Odin (недоделанная хрень)?
Zig (скорее заменитель Си, но вроде как довольно приятный язык с прикольными фишками которые даже уже работают)?
D (слишком долго мусолили, уже мёртв)?
Rust (решает проблемы, с которыми лично я почти не сталкиваюсь, и поэтому мне он не особо нужен)?
Nim (непонятная смесь всего и вся)?
Аноним 17/05/19 Птн 14:31:28 1401803245
>>1401609
>У C нет нормального ООП?
собственно классы эмулируются посредством структур с полями-данными и с указателем на таблицу (структуру, что-то другое) указателей на функции, которые значит будут выполнять роль методов класса, как то так..
инкапсуляция на уровне единиц трансляции, плюс есть ключевым слово static, плюс есть неполные типы.. вполне себе инкапсуляция..
наследование - сначала при помощи структур и указателей на функции эмулируются интерфейсы, далее соотвественно можно эмулировать и наследование интерфейсов (но не наследование реализации! вместо наследования реализации предпочитается методика агрегирования)
динамический полиморфизм легко реализуется посредством собственных vtable
единственная проблема - это статический полиморфизм, обычно задачи для которых он нужен решаются посредством макросов, что конечно не очень хорошо

Аноним 17/05/19 Птн 17:29:14 1401896246
image.png (379Кб, 601x451)
601x451
Аноним 17/05/19 Птн 20:09:44 1401990247
У меня два вопроса.
1. Когда я вызываю delete[] откуда ОС знает где кончается массив? Впрочем важно больше не это, а почему я не могу у ос спросить где он кончается, а вместо этого должен какой-нибудь 0 в конец записывать или содержать переменную с числом элементов?

2. Принято писать функции безопасно - что бы ты туда не передал в аргементах - она либо нормально отработает, либо выкинет исключение. Но, для того чтобы выкинуть исклбчение порой делается немало проверок- если одна переменная равна тому-то. Если эта функция вызывается 1000 раз в секунду, то проверок становится в 1000.
Или еще из той же серии - предположим есть какой-то класс ориентированного по осям прямоугольника и ему для задания параметров нужно соответственно знать 4 координаты4 значения. Наверняка у него будет конструктор принимающий их типа Rectangle(const Point &p1, const Point &p2), и внутри него будут очередные проверки с логикой типа if p1.x < p2.x then left = p1.x...
И суть в обоих этих примерах в том, что порой когда мы передаем в какую-то подобнобную функцию аргемнты - мы можем уже тогда знаем в каком виде они там нужны и проверки будут бессмысленными.
Например
Rectangle a ...
Rectangle b(a.TopLeft(), a.BotRight()); - мы уже передаем в нужном виде данные.
Собственно, мне интересно - может ли это заметно повлиять на производительность и если да, то придумали ли что-то для этого?
Аноним 17/05/19 Птн 20:33:35 1402011248
>>1401990
>откуда ОС знает где кончается массив?
Не ОС, а менеджер памяти, он может быть кастомным. Менеджер памяти хранит таблицу соответствия указателей и длин.
>почему я не могу у ос спросить где он кончается
Потому что разные ОС реализуют эту хуйню по-разному или вообще решили, что нинужно. Ты можешь сделать кастомный менеджер памяти, который будет запоминать это дело сам или обращаться к ОС, если знает как, но в язык это не встроено, потому что мало кому надо, а ресурс будет кушать.
>Если эта функция вызывается 1000 раз в секунду, то проверок становится в 1000
Для часто вызываемых функций так делать не надо, проверяй корректность сразу при конструировании/изменении объекта, потом вызывай без проверок. Если объект создается очень часто, то рассмотри возможность не выделять его в отдельный объект, а сделать контейнер, в котором хранить сырые данные и делать массовые операции над ними без проверки.
Аноним 17/05/19 Птн 20:44:01 1402025249
>>1401990
> Когда я вызываю delete[] откуда ОС знает где кончается массив?
Ниоткуда, ОС выделяет память страницами и понятия не имеет о твоих данных. new, delete, malloc, free etc на самом деле обращаются к оптимизирующему менеджеру кучи в malloc.с который и организует отображение твоих адресов на выдаваемые ОС страницы (которые сама ОС может как хочет отображать на физическую память), и где кончается массив знает именно он.
Таким образом аллоцирование/деаллоцирование памяти в общем случае не обязано за собой вести захват/освобождение памяти у ОС.
ЗЫ а примитивный сборщик "мусора" был уже в сях.
Аноним 18/05/19 Суб 13:19:12 1402392250
Памагите! Меня заело. Как передать указатель на нестатическую функцию-член в качестве аргумента другой функции?
Аноним 18/05/19 Суб 13:24:28 1402396251
>>1402392
Берёшь и передаёшь, в чём проблема? Читал, что компилятор выдаёт?
Аноним 18/05/19 Суб 13:31:55 1402415252
>>1402396
Пишет, что операция невозможна с привязанной функцией-членом.
Аноним 18/05/19 Суб 14:27:43 1402456253
>>1402415
"Pointer to member" это другой тип, его нельзя использовать как "pointer to function". Ты должен явно указывать в типе указателя, какого класса этот метод. Вот подробный гайд https://isocpp.org/wiki/faq/pointers-to-members .
Аноним 18/05/19 Суб 14:28:27 1402458254
Аноним 18/05/19 Суб 16:50:40 1402510255
>>1402392
std::mem_fun
или
std::mem_fn и std::bind

Аноним 18/05/19 Суб 19:35:35 1402579256
>>1402392
А ты уверен, что тебе это вообще нужно?
Аноним 18/05/19 Суб 22:08:59 1402652257
Насколько я знаю, запутанные иерархии с множественным наследованием обычно не делают, но тем не менее:
Предположим я пишу какую-то библиотеку и я сделал класс Б, который наследуется от класса А, и класс В, которы тоже наследуется от класса А.
Другой человек взял мою библиотеку сделал класс Ц, который наследуется от Б и В. Ему получается никак не сделать чтобы клксс Ц содержал лишь одну копию А. Должен ли я по дефолту всё, от чего в теории могут наследоваться, наследовать виртуально, или если этот человек решил класс Ц сделать - то это он уже сам виноват что хуйню творит?
Аноним 18/05/19 Суб 22:32:44 1402664258
>>1402652
Чтобы такой хуйни не было, нужно все библиотечные классы делать шаблонными, а наследовать через CRTP. Тогда этот хуй сможет декорировать класс А, сделав Авирт, который нихуя не добавляет, а просто наследуется от А виртуально. И потом передать Авирт в Б и В, от которых унаследуется Ц, и все будет заебись.
Аноним 19/05/19 Вск 01:57:08 1402807259
>>1402652
>Ему получается никак не сделать чтобы клксс Ц содержал лишь одну копию А.
Можно, гугли виртуальное наследование.
Аноним 19/05/19 Вск 13:56:03 1403011260
>>1402579
Так, разобрался. Нестатические методы принимают this неявно первым аргументом, т.е. метод с явным одним параметром для компиллятора виден как принимающий 2. Я же пытался его передать туда, где ожидался std::function, принимающий только один. Решил с помощью std::bind, привязав первый параметр к this.
Аноним 19/05/19 Вск 18:36:48 1403326261
Аноним 19/05/19 Вск 18:41:43 1403329262
>>1403326

class Class
{
public:
void member(){}
}
void f(void (Class::ptr) (void), Class a)
{
a->ptr();
}

int main()
{
f(&A::member)();
}
Вот так подробнее.
Аноним 19/05/19 Вск 22:24:47 1403506263
У меня вопрос не совсем по теме треда, а по алгоритмам, но тем не менее.
Если сделать класс для последовательности, который содержит std::set для элементов и std::vector от итераторов для хранения порядка - это идиотизм или нет? Ах да, нужно также сделать операции вставки одной последовательности в другую и исключения. Получается при операции исключения будет тупа пробегаться вектор итераторов по порядку, также, как и если бы все данные просто хранились в массиве, да ещё и придётся дополнительные действия над сетом совершать. Разве что можно операцией поиска сразу проверить есть ли нужные элементы, и если есть - идти также смотреть порядок по вектору.
В случае вставки аналогично - никакого выигрыша от сета нет, мы не пользуемся операцией поиска, мы просто вставляем элемент и в сет и в массив векторов итератор на него.
Аноним 19/05/19 Вск 22:40:53 1403512264
--191.jpg (31Кб, 500x480)
500x480
Супер тупой вопрос, но Я НЕ ПОНИМАЮ БЛЭТ. Как запилить глобалные переменные и функции? Я уже и определение вместе с объявлением писать, и в разных местах extern, то он не находит переменные, то грит, что они уже объявлены в одном из .obj.
Есть такие файлы:
global.h:
#ifndef GLOBAL_H
#define GLOBAL_H
extern int a = 228;
extern void doShit(int foo);
#endif
global.cpp:
void doShit(int foo) {/ does some shit /}

Что нужно написать в meh.cpp и mda.cpp чтобы там были доступны соответствующая переменная и функция?
Касательно неймспейсов я ничего еще не пробовал. Хочу, чтобы все было доступно без указания областей видимости, если это возможно.

Инбифо: "ололо, ты долбоеб, глобальные переменные нинужны", — да, да, я знаю.
Аноним 19/05/19 Вск 22:41:59 1403513265
>>1403512
> global.cpp:
> #include "global.h"
> void doShit(int foo) {/ does some shit /}
fix
Аноним 19/05/19 Вск 22:45:48 1403514266
>>1403512
Блять, оказалось, что я действительно долбоеб. Стоило только на сосач написать и все починилос. Вопрос закрыт.
Аноним 19/05/19 Вск 22:47:31 1403515267
>>1403514
В cpp файл int a = 228;
В хедер extern int a;
Хотя лучше глобальные переменные не использовать совсем.
Аноним 19/05/19 Вск 22:47:37 1403516268
>>1403512
В global.cpp наверх добавь
#include "global.h"

Из global.h убери присваивание, так делать нельзя, просто оставь объявление.
дальше выбери любой cpp файл и там напиши int a = 228;

>Что нужно написать в meh.cpp и mda.cpp
#include "global.h"
Аноним 19/05/19 Вск 22:49:40 1403518269
>>1403515
>>1403516
Хм, у меня заработало по-другому. Лучше сделаю так, спасибо.
Аноним 19/05/19 Вск 22:52:22 1403519270
>>1403518
Лучше сделай так. В хедере

struct Global {
int a = 228;

void doShit();
};

в .cpp файле:
void Globall::doShit() {

}

Глобальные переменные не нужны
Аноним 19/05/19 Вск 23:00:53 1403522271
>>1403519
Хуета.
1. Класс не инстанцируется, поэтому тогда уж надо делать всё статик.
2. Присваивать так нельзя для статика, это придется не в хедере.
Аноним 19/05/19 Вск 23:38:30 1403546272
>>1403522
Блядь, я ему говорю, что глобальные переменные не нужны, а он собирается "делать всё статик".
Дальше ты создаешь инстанс класса Global и передаешь его там, где тебе нужна a и doShit.
Аноним 20/05/19 Пнд 00:10:09 1403558273
>>1403546
Так ты хрень какую-то высрал.
1. Зачем функцию в эту структуру запихивать?
2. На кой черт вообще делать так как ты предлагаешь, если это не решает проблему споашивающего? Конечно, если ему нужео между двумя цпп файлами расшарить значение переменной - скорее всего он что-то не так делает, но тем не менее может ему надо или он чисто в образовательных целях смотрит. Но твоя идея создать зачем-то структуру глобал с этой переменной мне совершенно непонятна. Он может также и без твоей структуру кидать где хочет свою переменную.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов