Сохранен 516
https://2ch.hk/pr/res/525225.html
Прошлые домены больше не функционируют, используйте адрес ARHIVACH.HK.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Оффициальный™ традиционный® C++ тред #4

 Аноним 03/08/15 Пнд 22:32:02 #1 №525225 
14386303224510.png
И я увидел, долгий взгляд вперяя,
В stderr погрязших мыслям вопреки:
Была свирепа их толпа дурная.

Визжа, на стол роняли кулаки,
То лоб клавиатурой разбивая,
То мыши норовя изгрызть в клочки.

Учитель молвил: "Сын мой, здесь страдают
Те жалкие, кто выбрал путь крестов.
На гуще из compile-errors гадают

Несчастные. О них довольно слов."


Литература:

Для нюфань:
Три классических учебника для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
Герберт Шилдт - C++. Базовый курс (2010) - http://goo.gl/qMLAFl
Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004) - http://goo.gl/QvjR6x
Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u
Для желающих сразу начинать с Откровений Создателя - классика (может показаться суховатым):
Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2009) - https://goo.gl/87qXtW

Учимся не писать говнокод:
Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все.
Скотт Мейерс - Эффективное использование C++ (2005) - https://goo.gl/wsDXGz
Скотт Мейерс - Наиболее эффективное использование C++ (1996) - https://goo.gl/tHa0tO
Скотт Мейерс - Effective Modern C++ (на ангельском) (2015) - https://goo.gl/uImH0J
Скотт Мейерс - Эффективное использование STL (2002) - https://goo.gl/QtS8Dc
Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ (2005) - https://goo.gl/Cpk4YR

Наиболее детальные описания языка:
Бьерн Страуструп - Язык программирования C++ (2010) - https://goo.gl/iZBDiV
Стандарт C++14 (на ангельском) - https://github.com/cplusplus/draft/raw/master/papers/n4140.pdf
Последняя на данный момент версия черновика стандарта C++17 (на ангельском) - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4527.pdf

Тонкости языка (для гурманов):
Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC
Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S
Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512
Также для легкого чтения подойдет книжка c историей создания C++:
Бьерн Страуструп - Дизайн и эволюция C++ (1994) - https://goo.gl/FqbPwo

Отдельные аспекты:
Читать по необходимости.
Энтони Уильямс - Параллельное программирование на C++ в действии (2012) - https://goo.gl/qJfBkD
Николаи Джоссатис - C++. Стандартная библиотека (2012) - https://goo.gl/PEyiMH
Дэвид Вандевурд, Николаи Джоссатис - Шаблоны C++. Справочник разработчика (2003) - http://goo.gl/0M4NpG

Ссылки:

Годный блог, в котором все просто и понятно тян не нужны кококок борщ - http://alenacpp.blogspot.ru/
Краткие описания библиотечных функций и контейнеров - http://ru.cppreference.com/w/
Блог Герба Саттера (на ангельском) - http://herbsutter.com/
Блог Скотта Мейерса (на ангельском) - http://scottmeyers.blogspot.ru/

Куда писать код:

Под шиндошс удобно использовать IDE Microsoft™ Visual Studio®. Базовую версию (2015 Community) можно бесплатно скачать, следуя инструкциям с этой страницы: https://www.visualstudio.com/ru-ru/products/free-developer-offers-vs.aspx. Чтобы начать писать код, нужно запустить Visual Studio, кликнуть "Файл - Создать - Проект - Пустой проект", после создания кликнуть слева правой кнопкой мыши по пункту "Файлы исходного кода", выбрать "Добавить - Создать элемент - Файл C++". Свои хэллоуворлды писать в этот файл, в дальнейшем можно добавить другие файлы и хедеры. Чтобы скомпилировать и запустить проект, нужно нажать "Сборка - Собрать решение", а затем "Отладка - Запуск без отладки".

Под *nix, как правило, уже предустановлен компилятор gcc (если нет, используй sudo aptitude install gcc), так что достаточно сохранить хэллоуворлд, набранный в текстовом редакторе, и выполнить g++ helloworld.cpp и ./a.out. Но удобнее установить какую-нибудь IDE, например, Code::Blocks (sudo aptitude install codeblocks) и работать в ней.

Можно также не устанавливать ничего, а запускать свои хэллоуворлды на http://ideone.com, выбрав в левом нижнем углу язык C++14.

Памятка:

Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Все идут на хуй.
Хейтер сосет члены на пару со своей мамашей.

Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode

Предыдущий: >>518004 (OP)
Аноним 03/08/15 Пнд 22:36:36 #2 №525228 
Предыдущие треды на архиваче:
https://arhivach.org/thread/94971/
https://arhivach.org/thread/94972/
https://arhivach.org/thread/99414/

В шапку добавлены новые драфты стандарта и информация об IDE.
Аноним 03/08/15 Пнд 22:47:42 #3 №525241 
>>525228
>драфты стандарта
Что это и где?
Аноним 03/08/15 Пнд 22:56:53 #4 №525244 
>>525241
Черновики стандарта на ангельском, которые в третьем пункте литературы. В них можно уточнить самые детали от безысходности, если больше нигде инфы не находишь.
удел насикомых  Ананос 03/08/15 Пнд 22:57:25 #5 №525245 
ананасы, какие узкие специальности можно задрочить, чтобы стать овердокуя оплачиваемым спецом? што сейчас актуально?
Аноним 03/08/15 Пнд 22:59:34 #6 №525248 
Что значат строки типо:

#define kukareku

koko = a + kukareku b;

Я правильно понимаю что это способ вставить комментарий прямо посреди строки кода?
Аноним 03/08/15 Пнд 23:05:48 #7 №525256 
>>525245
Ничего, игра закончена. С каждой написанной программой жызненное просранство для каждого отдельно взятого программистишки сжималось, http://gans-spb.livejournal.com/14901.html
Аноним 03/08/15 Пнд 23:16:36 #8 №525267 
>>525248
Это говно какое-то, для комментария посреди строки можно юзать /комментарий/ же.
Аноним 03/08/15 Пнд 23:17:18 #9 №525268 
>>525267
[code lang="cpp"]
/комментарий/
[/code]
Аноним 04/08/15 Втр 01:00:31 #10 №525307 
14386392314640.png
Поясните за колбэк.
Да, я понял что это грубо говоря функция которая вызывается во время наступление некоторого события, это если объяснять словами.
Но вот как это все реализовано, у меня в голове не укладывается.
Всюду простые примеры кода типа такого(пикрелейтед)
Здесь просто вызывается функция ссылку на которую содержит указатель на функцию. Но в таком примере можно это можно заменить непосредственным вызовом функции, да и всё. Непонятно когда именно очень необходим этот самый колбэк.
И еще.
> которая вызывается во время наступление некоторого события

Неясно каким это магическим образом оно узнает что событие наступило.
Оно что запускает в потоке бесконечный цикл и все время проверят наступило ли событие(например нажатие мыши) или как? Как это физически происходит? Как оно узнает какую именно функцию ей нужно вызвать в том или ином случае?
Аноним 04/08/15 Втр 01:15:11 #11 №525311 
>>525225 (OP)
>Под шиндошс удобно использовать
А почему в IDE про Eclipse ничего нету? Он неудобный? Там вроде даже рефакторинг какой-то из коробки и Git.
/мимонафаня
Аноним 04/08/15 Втр 01:27:56 #12 №525315 
>>525307
Профит в том, что ты можешь передать указатель на свою функцию куда-то, и там, имея этот указатель, и зная какие аргументы ей можно передавать, ее могут вызывать когда пожелают передавая в аргументы что-нибудь полезное.

Можно показать на примере куска кода регистрации обработчика событий окна шиндовс:
http://ideone.com/qzuf7T
Аноним 04/08/15 Втр 01:30:52 #13 №525316 
>>525315
>Передача ссылки на функцию
Сохранение указателя на функцию. & операция взятия адреса.
Мама,я все забыл
Аноним 04/08/15 Втр 01:37:06 #14 №525317 
>>524533
репощу с ласт треда вопрос, надеюсь, что поцаны не проигнорят, спс.
Аноним 04/08/15 Втр 01:51:39 #15 №525319 
14386422998580.jpg
>>525317
http://beej.us/guide/bgnet/output/html/multipage/index.html
Аноним 04/08/15 Втр 01:55:31 #16 №525321 
>>525315
> и там, имея этот указатель, и зная какие аргументы ей можно передавать, .
Что-то еще более не понятнее стало.
Почему бы просто не вызвать функцию и передать те же аргументы.
> ее могут вызывать когда пожелают передавая в аргументы что-нибудь полезное
Как вызов то происходит, как система узнает что вот сейчас пора вызывать, а когда не надо?
Аноним 04/08/15 Втр 01:57:35 #17 №525322 
14386426559840.jpg
>>525319
спасибо анончик, пойду осилять
Аноним 04/08/15 Втр 01:58:06 #18 №525323 
>>525321
> Как вызов то происходит, как система узнает что вот сейчас пора вызывать, а когда не надо?
на очереди тредик висит и выковыривает из неё сообшченьицца
Аноним 04/08/15 Втр 03:04:44 #19 №525336 
>>525321
>Как вызов то происходит,
Ты передал указатель. С его помощью можно вызвать.
>, как система узнает что вот сейчас пора вызывать, а когда не надо?
Система сама решает, что пришло время о чем-то сообщить.

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

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

Можно было бы опрашивать ОС о координатах раз в секунду, но это не так эффективно, поскольку курсор движется быстро по экрану, а пользователю твоего окна придется ждать когда твое приложение отошлет запрос и обработает положение мыши на экране. К тому же, ты будешь опрашивать ОС даже тогда, когда курсор находится за пределами твоего окна, а это неэффективно.
Аноним 04/08/15 Втр 10:15:10 #20 №525382 
>>525307
Ты не забывай еще, что хотя бывают указатели на методы, наподобие int (TvoyaMamka::*) (int), делать их коллбэками нельзя, тому що вызов методов не совместим ни с какими соглашениями о вызовах VC вон указатель на this передает вообще в регистре. И даже если метод статический, хотя по факту он везде будет нормально работать как коллбэк, если объявить его с _cdecl соглашением о вызовах, стандарт запрещает делать его коллбэком все равно, ибо нехуй. Используй глобальные функции, будь алтфаком.
Аноним 04/08/15 Втр 10:18:10 #21 №525383 
>>525311
Потому что я убежденный спермораб, очевидно же. Ну я указал ту, которой сам пользуюсь. Если кто-нибудь напишет про Eclipse, добавлю, конечно.
Аноним 04/08/15 Втр 10:24:36 #22 №525386 
>>525321
Самая банальная ситуация - у тебя есть какой-нибудь libcurl библиотека для работы с http, написана на pure c. Ты хочешь скачать этот тред при помощи своей программы. Поскольку pure c не может в std::string, он хочет писать код страницы в обычный char . Но буфер из ограниченного по размеру char передавать ему некошерно, ибо тред может быть большим и не влезть в него. Что делать? Ответ прост - ты передаешь в libcurl собственную функцию-обработчик потока символов, который генерится из кода страницы. Этот обработчик знает, куда пихать символы, он может юзать std::string, или уточнить размер буфера, или еще что-то придумать. Важно, что библиотека не может знать всего, поэтому она передает ответственность за схоронение твоему коллбэку, и дальше ее не ебет.

Если весь код твой, то, в принципе, можно обойтись без коллбэков. Если библиотека новая и на крестах, то тоже. Коллбэки же нужны именно для работы с чужим кодом на pure c, и вообще на других языках.
Аноним 04/08/15 Втр 13:01:12 #23 №525418 
14386824727800.png
Поясните пожалуйста, я внятного ответа в гугле не нашёл - когда я в стринг пишу русские символы, то вывод какой-то не такой, какой должен быть:
Аноним 04/08/15 Втр 13:04:44 #24 №525419 
>>525418
Либо setlocal делай правильный, либо в консоли chcp.
Аноним 04/08/15 Втр 13:07:03 #25 №525420 
>>525419
Я делал и такие:
setlocale(LC_ALL, "rus");
setlocale(LC_ALL, "russian");
Всё равно не работает как надо.
А что в консоли делать? Я в гугле читал про:
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Оно?
Но не совсем понял куда вставлять.
Аноним 04/08/15 Втр 13:16:14 #26 №525424 
>>525420
> ++
std::locale::global(std::locale(""))
Аноним 04/08/15 Втр 13:20:12 #27 №525425 
14386836127810.png
>>525424
>std::locale::global(std::locale(""))
Такая же батва, делал пустой и russian.
Аноним 04/08/15 Втр 15:17:38 #28 №525453 
Где найти все понятия по С++? Все эти инициализация, объекты, типа, литералы етц?
Я учебник страуструпа читаю, там есть далеко не все понятия, а некоторые немного размыты.
Аноним 04/08/15 Втр 17:21:28 #29 №525482 
>>525453
конспектируй, другой учебник глянь если какая-то тема не лезет в голову




Аноним 04/08/15 Втр 17:31:11 #30 №525486 
Поясните, я сделал программку с учебника, но она получилась очень громоздкой с кучей копипасты.
Я подумал - можно ли как-то было укоротить решение? Но так, чтобы использовать только простые, стандартные функции, типа if или while? А так же тип стринг.
https://ideone.com/s591kt
Сама задача: Напишите программу, предлагающую пользователю ввести определенное коли-
чество 1-, 5-, 10-, 25-, 50-центовых и долларовых монет. Пользователь должен
по отдельности ввести количество монет каждого достоинства, например
“Сколько у вас одноцентовых монет?” Результат должен выглядеть следующим
образом.
У вас 23 одноцентовые монеты.
У вас 17 пятицентовых монет.
У вас 14 десятицентовых монет.
У вас 7 25-центовых монет.
У вас 3 50-центовые монеты.
Общая стоимость ваших монет равна 573 центам.
Усовершенствуйте программу: если у пользователя только одна монета, выве-
дите ответ в грамматически правильной форме. Например, “14 десятицентовых
монет” и “1 одноцентовая монета” (а не “1 одноцентовых монет”). Кроме того,
выведите результат в долларах и центах, т.е. 5,73 доллара, а не 573 цента
Аноним 04/08/15 Втр 17:37:44 #31 №525489 
14386990648370.jpg
>>525486
>int one = 1;
>int two = 2;
>int three = 3;
Аноним 04/08/15 Втр 17:38:37 #32 №525490 
>>525486
Вынеси поворяющийся код в функции
Аноним 04/08/15 Втр 17:44:01 #33 №525493 
>>525489
Что не так? Типа, one - один цент.
Да, может стоило добавить one_cent.

>>525490
Я функции еще не изучал.
Аноним 04/08/15 Втр 17:53:22 #34 №525499 
>>525382
Я всё понял :3
>>525336
То есть система несет ответственность за то когда курсор дернется и когда это произойдет она передает ссылку на свою функцию как аргумент в мою функцию, которая выполняется в отдельном потоке?
>>525386
Это же другая ситуация, если нам просто нужно подставить свою реализацию в некоторую функцию.
Вот в вики написанно:

Об обратном вызове можно думать как о действии, передаваемом некоторой основной процедуре в качестве аргумента. И это действие может рассматриваться как:

1. подзадача и использоваться для обработки данных внутри этой процедуры;
2. «телефонная связь», используемая для того, чтобы «связываться» с тем, кто вызвал процедуру, при наступлении какого-то события (англ. callback дословно переводится как «звонок обратно»).

Меня же интересует второй случай.
Аноним 04/08/15 Втр 17:55:13 #35 №525502 
>>525493
>Я подумал - можно ли как-то было укоротить решение?
>Я функции еще не изучал.
>Вынеси поворяющийся код в функции
форман джипег.
Вот иди изучи и упростишь
Аноним 04/08/15 Втр 17:55:52 #36 №525503 
>>525486
Вместо своих россыпей суффиксов юзай функции же.

[code lang="cpp"]
enum class Case { SINGLE_SUBJ, MULTI_SUBJ, MULTI_GEN };

Case getCase (int number)
{
int res = number & 10;

if (res == 1)
return Case::SINGLE_SUBJ;
else if ((res > 1) && (res < 5))
return Case::MULTI_SUBJ;
else
return Case::MULTI_GEN;
}

std::string getCoinSuffix (int number)
{
Case res = getCase (number);

if (res == Case::SINGLE_SUBJ)
return "а";
else if (res == Case::MULTI_SUBJ)
return "ы";
else
return "";
}

std::string getNominalSuffix (int number)
{
Case res = getCase (number);

if (res == Case::SINGLE_SUBJ)
return "ая";
else if (res == Case::MULTI_SUBJ)
return "ые";
else
return "ых";
}
[/code]
Аноним 04/08/15 Втр 17:56:43 #37 №525504 
>>525503
>number % 10
Быстрофикс.
Аноним 04/08/15 Втр 18:00:26 #38 №525507 
>>525499
На самом деле это концептуально одно и то же. Чужой код не знает как совершить действие и использует твой "обработчик". А что конкретно он делает - обрабатывает данные или обращается к тебе - это уже дело десятое.
Аноним 04/08/15 Втр 18:00:54 #39 №525508 
>>525499
>То есть система несет ответственность за то когда курсор дернется и когда это произойдет она передает ссылку на свою функцию как аргумент в мою функцию, которая выполняется в отдельном потоке?

То есть система вызывает метод в библиотеке (которая отвечает за работу с UI), когда ты дернул мышь:
void mouseMoved(int x, int y);

А внутри метода примерно так:

{for (int i=0; i++; i < subscribes.lenght) {
subscribes.DO_IT(x, y);
}}

где subscribes - массив структур, в которых хранятся указатели на все методы, которые должны выполниться на этом событии.
Аноним 04/08/15 Втр 18:01:59 #40 №525510 
>>525508
Вакаба сожрала скобки:
subscribes[\ i \].DO_IT(x, y);
Аноним 04/08/15 Втр 18:46:58 #41 №525531 
анон, помогай, у меня трабл с файловым выводом. Вывожу в файл экземпляры класса second, производного от first, все идет норм, выводится, читается, до тех пор, пока я не делаю функции базового класса first виртуальными, после этого ни в какую не читает экземпляр из файла. какой там танец с бубном нужно станцевать?
Аноним 04/08/15 Втр 20:50:10 #42 №525581 
>>525248
Это константа через дефайн. Нахуй не нужно имхо. Хотя некоторые любят.
Аноним 04/08/15 Втр 20:56:23 #43 №525584 
>>525581
>некоторые любят
С принятием C++11 эти некоторые оффициально считаются говноедами. Если раньше альтернативой было только const TvoyaMamka kukareku, которую хуевый компилятор уносил в рантайм даже если она использовалась только как константа времени компиляции, то теперь есть православный constexpr, для которого не сгенерируется никакого кода, и при этом не будет проблем с областью видимости и статическими проверками типов, которые есть у #define.
Аноним 04/08/15 Втр 21:43:22 #44 №525603 
>>525581
И где там константа?
Аноним 04/08/15 Втр 22:13:16 #45 №525621 
>>525581
Да я знаю что такое #define. Тут же ничего не присваивается, и получается что этот define можно писать где хочешь без влияния на программу.
sageАноним 04/08/15 Втр 22:23:27 #46 №525626 
>>525508
Всё, теперь вроде наконец понял.
Есть метод в системе который заточен для того чтобы добавлять субскрайберов(указатели на функции) на метод изменения координат курсора - этот метод взаимодействует с этим списком субскрайберов и когда мышь изменяет координаты выполняет каждую из функций, которые были на него подписаны, а уже что там за реализация не имеет значения для этого метода.
Аноним 04/08/15 Втр 23:32:33 #47 №525658 
>>525621
Можно в дальнейшем заменить пустоту на #define kukareku c + же. Если написать a + kukareku + b, то для пустоты не сработает, а так можно добавить любое количество слагаемых.
Аноним 04/08/15 Втр 23:34:38 #48 №525659 
>>525531
Давай код. Телепаты в отпуске.
Аноним 04/08/15 Втр 23:39:23 #49 №525662 
>>525248
Макросы. Заменяются препроцессором на настоящий код. С помощью них можно творить нечитаемое говно, например написать ОС http://www0.us.ioccc.org/2004/gavin.c
Аноним 05/08/15 Срд 00:17:24 #50 №525675 
14387230442220.jpg
14387230442241.jpg
https://twitter.com/EpicSammyJames/status/628551106520555521
Аноним 05/08/15 Срд 01:42:57 #51 №525708 
>>525675
что это за мусорка с твиттера?
Аноним 05/08/15 Срд 01:47:51 #52 №525710 
14387284716860.gif
14387284717091.jpg
>>525675
Аноним 05/08/15 Срд 02:47:15 #53 №525719 
14387320355400.png
>>525418
А я нашел ответ в гугле по запросу setlocale getlocale (stackoverflow)
Аноним 05/08/15 Срд 03:52:56 #54 №525725 
>>525675
похуй же. Говно какое нибудь делает. А программистом любой аутист с гуманитарным образованием сможет стать при должном усердии и наличии интернета.
Аноним 05/08/15 Срд 06:47:30 #55 №525747 
Есть что почитать про правильное и неправильное использование инклудов, а то я заебался с этими "does not name a type", "has no member named", "expected primary-expression before 'int'" и остальными ошибками из-за неправильного использования инклудов. Вроде и везде гарды стоят, но все равно говно получается.
Аноним 05/08/15 Срд 10:20:56 #56 №525764 
>>525747
В начале каждого .h ставишь #pragma once, либо весь файл целиком в include guard. Константы у include guard не должны, блджад, повторяться, поэтому в подавляющем большинстве случаев удобнее не следить за этим, а использовать прагму кококок нестандарт символические ссылки.

Итак, в каком-то .h описан твой класс. Если ты, хуила, вынес из класса определение метода, но оставил его в том же .h файле, а не перенес в соответствующий .cpp, то подставляй свою сраку - это говно иногда будет компилироваться, а иногда нет.

Где-то в другом файле ты хочешь использовать свой класс TvoyaMamka. Если он используется только в сигнатуре функции, или ты используешь ссылку/указатель на него, но не обращаешься к его членам, то достаточно в начале файла написать class TvoyaMamka, то есть, просто объявить его. Никаких инклудов делать не надо, понял епту?

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

Если у тебя возникла ситуация, когда файлы инклудят друг друга, то у меня для тебя плохие новости - ты долбоеб. Чтобы избавиться от циклического включения, необходимо выбрать из этих двух файлов "главный". В "главном" файле ты оставляешь инклуд "неглавного", а в "неглавном" приводишь код к такому виду, чтобы, блядь, инклуд "главного" не требовался - переходишь к указателям, выносишь все говно в .cpp и так далее. И потом вместо инклуда "главного" просто объявляешь его с помощью class.

Это далеко не все, но достаточно, чтобы ты не срал в штаны слишком уж часто.
Аноним 05/08/15 Срд 11:04:06 #57 №525776 
>>525764
А если у меня есть три файла A.h, B.h и C.h, причем А и B используют говно из С stdlib, например, а у класса в А есть член-экземпляр класса из В, то только А должен иметь инклуды оставшихся двух?
Аноним 05/08/15 Срд 11:09:55 #58 №525777 
>>525764
Чему в новом стандарте не откажутся от .h и всей сопутствующей ебли зависимостей? Почему не позаимствуют опыт других языков, например того же шарпа, в котором компиль справляется с генераций без всяких дополнительных заголовков?
Аноним 05/08/15 Срд 11:21:01 #59 №525783 
>>525777
Обратная совместимость потому что. А в плане опциональной поддержки вроде что-то замышлялось, но вряд ли это будет до C++20.
>>525776
Тогда в A включен B, а A и B могут при необходимости включать C, но по возможности следует этого избежать. Например, подключать stdlib транзитом это плохой тон. Нужны тебе куски stdlib в A - подключай их непосредственно в A. Это уменьшает зависимости же, вдруг ты потом решишь переделать C, чтобы он не использовал stdlib.
Аноним 05/08/15 Срд 15:05:54 #60 №525838 
>>525776
Google://include guards
Аноним 05/08/15 Срд 15:22:29 #61 №525842 
>>525838
Ниочем вообще, на одних гардах далеко не уедешь, там даже порядок включения роль играет.
Аноним 05/08/15 Срд 16:29:44 #62 №525891 
>>525842
Если играет, то ты делаешь что-то не так. Используешь using в заголовочных файлах, циклические зависимости или еще какое говно.
Аноним 05/08/15 Срд 16:35:39 #63 №525904 
>>525891
>Используешь еще какое говно
C++
Аноним 05/08/15 Срд 16:59:01 #64 №525926 
>>525904
У вас финализатор отклеился, уважаемый. Проследуйте в свой загон, будьте так любезны.
Аноним 05/08/15 Срд 17:19:12 #65 №525935 
>>525926
Чиво блять?
Аноним 05/08/15 Срд 22:35:16 #66 №526098 
>>525490 >>525502
Ребята, это Страуструп для ньюфагов, будьте снисходительны. Страуструп сначала заставляет перекусить ржавую трубу собственным анусом, и только потом рассказывает про ножовку где-то страниц через сто.
Аноним 05/08/15 Срд 23:37:43 #67 №526134 
>>526098
А Лафоре/Прата рассказывают только про ножовку, информация про ржавые трубы стыдливо спрятана в конце книги, а о том, что у человека есть анус, не упоминается вообще.
Аноним 06/08/15 Чтв 03:52:25 #68 №526210 
>>526134
ну тем не менее это нужнее, и после них Стратоуструпа можно просто пролистать просмотреть листинги. У меня первой книгой был как раз Стратоуструп, и я наверное целый месяц осмысливал первую программку где калькулятор предлагает сделать.
Аноним 06/08/15 Чтв 04:24:13 #69 №526217 
14388242536240.jpg
>>526210
>осмысливал первую программку где калькулятор предлагает сделать
не понял как на это реагировать, ты ебанутый(да)?
в основном тебе нужно было понять как работать с классами(начально) и разбивать программу на функции. ВСЕ, там даже задания не нужно делать, если ты все понял, потому что они настолько ебанутые, что иди нахуй просто.
Аноним 06/08/15 Чтв 04:56:43 #70 №526224 
>>525764
А что на счёт precompiled headers?
Как с ними правильно работать?
Аноним 06/08/15 Чтв 10:33:56 #71 №526279 
>>526224
Я никогда не пользовался, самому интересно. Но вроде это какая-то ебала, хороша только когда очень много гигантских хедеров, ибо из-за предкомпиляции накладываются ограничения.
Аноним 06/08/15 Чтв 11:10:35 #72 №526286 
Платиновый вопрос, как перекатиться с шарпа на кресты?
Аноним 06/08/15 Чтв 12:17:31 #73 №526302 
14388526517060.gif
>>526286
Каков вопрос..
Аноним 06/08/15 Чтв 13:26:58 #74 №526350 
Поясните, что в ++ значит << или >> ?
Как я понял - это символ перемещения переменной в? Или как?
Аноним 06/08/15 Чтв 13:28:22 #75 №526353 
Как лучше всего создать гуи?
Аноним 06/08/15 Чтв 13:50:03 #76 №526363 
>>526350
Побитовый сдвиг числа влево и вправо. Например, у тебя есть char tvoya_mamka = 3, это 00000011 в двоичной системе. Ты пишешь char tvoya_babka = tvoya_mamka << 1, и бабка инициализируется значением 6, которое равно 00000110 в двоичной системе и получено сдвигом влево на один бит. Это можно использовать для умножения на степени двойки, ибо сдвиг иногда работает быстрее настоящего умножения.

Поскольку операции сдвига можно перегружать, а сдвиг с правым аргументом, не являющимся целым числом, смысла не имеет, было решено использовать их как операторы ввода и вывода, когда справа стоит что-то кроме целого числа.
Аноним 06/08/15 Чтв 13:51:39 #77 №526365 
>>526353
WinAPI - единственный легитимный выбор.
Аноним 06/08/15 Чтв 13:53:41 #78 №526367 
>>526363
Т.е. это операторы ввода и вывода? А как они точно описываются?
Я их использую для cin или cout, например:
cin >> var;
Т.е. ввожу что-то в вар.
cout << "test";
Ввожу что-то в команду вывода.
Так?
Аноним 06/08/15 Чтв 14:00:00 #79 №526371 
>>526367
[code lang="cpp"]
std::ostream & operator<< (const TvoyaMamka & mamka)
{
//...
}
[/code]

Вот стандартная сигнатура перегруженного для класса TvoyaMamka оператора. Внутри оператора может быть что угодно, стандарт не обязывает делать именно ввод и вывод. Но обычно ты внутри каким-то образом форматируешь члены класса и вызываешь операторы вывода для них. Они, в свою очередь, выводят свои члены... Когда доходит до примитивных типов, например, double или int, вызываются стандартные функции <<, которые используют низкоуровневые функции вывода, зависящие от операционной системы.
Аноним 06/08/15 Чтв 14:01:01 #80 №526372 
>>526371
Obosralsya, конечно же
[code lang="cpp"]
std::ostream & operator<< (std::ostream & stream, const TvoyaMamka & mamka)
{
//...
}
[/code]
Аноним 06/08/15 Чтв 14:08:09 #81 №526376 
>>526365
Перетолстил.
Аноним 06/08/15 Чтв 14:52:57 #82 №526409 
>>526134
>А Лафоре/Прата рассказывают только про ножовку
... для ньюфагов это очень плохо. Я это говорю фактически как ньюфаг. Надо наступить на максимальное количество граблей, чтобы потом действительно оценить разбиение на функции и прочие ножовки сто страниц спустя.

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

>>526210
>и я наверное целый месяц осмысливал первую программку где калькулятор предлагает сделать
Если ты и про шестую, и про седьмую главу вместе, то ты просто гений. Я над шестой главой месяц ебался, кажется.
Аноним 06/08/15 Чтв 15:15:09 #83 №526416 
Скажите мне, это STL такое говнище, или я как-то неправильно ей пользуюсь?
Возникала тут задачка на работе, которую численными методами решить надо было, с хуйлиардом входных данных. Я прикинул - а оно всё на мапы и векторы идеально ложилось. Ну я и набросал за пару дней няшную компактную програмку, отдебажил, запустил на реальных данных, и сел ждать результаты первой порции. И что-то как то МЕДЛЕННО. Запускаю профайлер - а оно 99% времени проводит в вызовах map.
В общем, я охуел и выкорчевал нахуй весь stl-код из проекта, после чего всё стало работать в стопицот раз быстрее. Ну вот как так? Или STL вообще не предназначена для высоконагруженных приложений?
Аноним 06/08/15 Чтв 15:18:32 #84 №526417 
>>526217
>>526409
да про нее. Я тогда был школодроном с максимализмом и не пониманием как можно что то учить самому, и только после бейсик. Зашел в магазин и увидел этот монолит Стратоуструпа на полке, купил. Вроде бы все было легко до ебучего калькулятора, там я месяц сидел в отладчике и пошагово выполнял каждую команду, и где то спустя чуть более месяца на меня наконец то снизошло озарение, как же там блять все работает. Потом где то до середины досчитал и бросил, вернулся к ней только на втором курсе.
Аноним 06/08/15 Чтв 15:20:55 #85 №526419 
Как сделать, чтоб указатель указывал на переменную-защищенный член класса? Метод clss::a(int* pointer) { pointer = &clssVar; } сработает? Или надо адрес переменной возвращать? Как вообще все эти функции и методы с переменными работают? Копируют значения или читают по реальным адресам?
Аноним 06/08/15 Чтв 15:46:55 #86 №526434 
>>526416
Ну что за задача-то? Вроде умный человек, решаешь какие-то задачи, а никакой конкретики нет. STL писали для быстрой работы с памятью в 90% стандартных ситуаций. Может, ты просто не умеешь её готовить -- я имею в виду выбрать правильный контейнер для твоих задач.
Аноним 06/08/15 Чтв 15:51:26 #87 №526439 
>>526416
> выкорчевал нахуй весь stl-код из проекта, после чего всё стало работать в стопицот раз быстрее
На что заменил-то?
Аноним 06/08/15 Чтв 15:52:22 #88 №526441 
>>526416
Предназначена. Но надо понимать, а не просто бездумно укладывать все на контейнеры. Если у тебя там были, блядь, поэлементные присваивания этих векторов, а вместо unordered_map с грамотной хэш-функцией обычная map с ключами из string, когда при каждом обращении к элементу идет O(log(n)) сравнений строк, то удивительно бы было, если бы оно быстро работало.
Аноним 06/08/15 Чтв 16:00:42 #89 №526444 
>>526419
Сам указатель-параметр копируется, а то, на что он указывает - нет. Если присвоить что-то разыменованному pointer, то оно запишется по реальному адресу, навсегда. Если присвоить что-то самому pointer, то изменится только копия параметра внутри функции, после выполнения никакого эффекта не будет. Чтобы был эффект, нужно сделать
[code lang="cpp"]
int clss::a () { return &clssVar; }
//либо
void clss::a (int
pointer) { pointer = &clssVar; }
[/code]
Второй вариант удобен, когда таких указателей несколько, чтобы не пихать их все в возвращаемое значение. Делать изменение по ссылке типа int & pointer некошерно, ибо можно выстрелить себе в ногу.
Аноним 06/08/15 Чтв 16:02:27 #90 №526446 
>>526376
Но ведь так и есть.
Аноним 06/08/15 Чтв 17:07:07 #91 №526481 
>>526444
Во втором случае будет ошибка "int* to int", pointer - указатель на int, а не просто Int.
Аноним 06/08/15 Чтв 17:44:22 #92 №526500 
>>526481
&classVar это указатель на int
pointer это указатель на указатель на int, разыменованный pointer это указатель на int.
Как что все там нормально будет, присваиваются указатели на int.
Аноним 06/08/15 Чтв 19:53:03 #93 №526549 
[code lang=c++]
//raw - указатель на QDataStream
raw->readRawData(temp, 4);
[/code]
Выдает ошибку
[code]
invalid type argument of unary '
' (have 'int')
*raw->readRawData(temp, 4);
^
[/code]
Что я делаю не так?
Аноним 06/08/15 Чтв 19:58:34 #94 №526550 
>>526549
Либо ты делаешь *raw.readRawData, либо raw->readRawData.
Аноним 06/08/15 Чтв 21:15:24 #95 №526572 
14388849246560.jpg
Такой вопрос.

Почему многие рикаминдуют сначала выучить С, чтобы потом учить С++? Ведь это разные языки, и если тебе надо С++, то не проще сначала учить то что надо, а потом уже посмотреть его отличия от того же С?
Ну, я ещё понимаю советы для ньюфагов, которые ничего не понимают в программирование, но если взять уже человека который понимает что-то, нахуя ему С учить?

Поясните позязя.
Аноним 06/08/15 Чтв 21:27:58 #96 №526575 
>>526572
Учи Си, лентяй. Всё верно тебе советуют.
Аноним 06/08/15 Чтв 22:43:49 #97 №526601 
>>525225 (OP)
Плюсобоги, помогите, гугл ничего не дал, да и скорее всего не даст, так как это что-то странное.
В чем суть:

Есть конструктор класса. Туда агрументом я передаю указатель на рендерер и хочу чтобы он сохранился в ren(private SDL_Renderer N_Texture::ren)

когда я создаю класс в main.cpp и даю в конструктор рендерер, то с ren НИЧЕГО НЕ ПРОИСХОДИТ
N_Texture::N_Texture(SDL_Renderer
renderer)
{
Texture = NULL;
width = 0;
height = 0;
ren = renderer;
}


Но если я сначала создам экземпляр, а потом в коде программы вызову вот это:
void N_Texture::setRenderer(SDL_Renderer* renderer)
{
ren = renderer;
}

то ren таки становится равен переданному значению. Конечно, можно для каждого экземпляра вызывать эту функцию, но это какой-то костыль
Аноним 06/08/15 Чтв 22:48:31 #98 №526605 
>>526601
SDL_Renderer N_Texture::ren

и еще

N_Texture::N_Texture(SDL_Renderer
renderer)

самофикс
Аноним 06/08/15 Чтв 22:48:56 #99 №526606 
>>526575
Что ему правильно советуют?
Аноним 06/08/15 Чтв 22:57:11 #100 №526613 
>>526601
помогите, почему в конструкторе присваивание не происходит, а в функции происходит?

У меня конечно есть подозрение, что это из-за того что я объявляю экземпляр ВНЕ блоков(т.е. не в main или любой функции). Но как тогда вызывать конструкторы глобальных переменных?

А то у меня будет этих N_Texture просто гора и для каждой вызывать setRenderer...это просто стена кода будет. А если нету иного пути, можно это сделать как-то красиво?
Аноним 06/08/15 Чтв 23:23:33 #101 №526626 
>>526613
Глобальные переменные определяются не всегда по порядку. Можешь создать вспомогательный класс, установить в нем renderer один раз, а потом просто вызывать метод N_Texture Factory::N_Texture() { return N_Texture(renderer); }, можешь запилить статичную переменную-член и установить её значение в main(), можешь запилить отдельный глобальный класс, а потом просто читать из него renderer каждый раз, когда понадобится.
Аноним 06/08/15 Чтв 23:58:28 #102 №526646 
>>526572
Я бы не сказал что это разные языки. И в проекте написанном на C++ можно ебаться в сраку с битами и указателями. Просто если не хочешь быть тупой макакой которая просто складывает программу из непонятных ему кусков, лучше изучить более низкоуровневый язык, для того чтобы знать что стоит за всей этой хуйней.
Аноним 07/08/15 Птн 00:04:35 #103 №526652 
14388950757630.jpg
почему не работает?
Аноним 07/08/15 Птн 00:09:13 #104 №526654 
>>526646
>Я бы не сказал что это разные языки.
Там даже фигурные скобочки разные.
Аноним 07/08/15 Птн 00:15:01 #105 №526656 
>>526654
Какие скобочки блять?
Аноним 07/08/15 Птн 00:33:32 #106 №526668 
>>526656
На той же строке справа вверху, не видел штолле?
Аноним 07/08/15 Птн 03:58:31 #107 №526721 
>>526668
Нихуя не разные. Ты можешь всю программу в одну строку написать, что в Си, что в C++. Это вопрос только стиля, куда ставить скобочку.
Аноним 07/08/15 Птн 08:19:48 #108 №526738 
Не могу нагуглить сам. Накидайте код дискретного преобразования Фурье (ДПФ) для одномерного массива значений произвольной длины. ДПФ, подчёркиваю, т.е. мне не нужно гнаться за n X log(n). Хочу просто увидеть несколько строчек преобразования Фурье, скажем, для int_array размера array_size. Будем считать, что значения int_array отстоят друг от друга на единичку.

Что мне нужно на выходе? Массив амплитуд или мощностей (энергий) частот. Ради такой мелочи не хотелось бы возиться с подключением fftw.
Аноним 07/08/15 Птн 09:22:57 #109 №526742 
>>526738
А почему такое не подходит, например?
http://www.nayuki.io/page/how-to-implement-the-discrete-fourier-transform
Аноним 07/08/15 Птн 10:06:11 #110 №526745 
>>526742
>А почему такое не подходит, например?
Потому что я не умею гуглить? Вообще,

>We will use the Java programming language to illustrate.
Но я думаю, разберусь. Спасибо.

А по каким ключевым словам искал, что нашёл именно то, что нужно?
sageАноним 07/08/15 Птн 10:27:53 #111 №526749 
>>526745
Блядь, там на Си есть. Сажи мне и говна.
Аноним 07/08/15 Птн 18:35:48 #112 №526903 
Есть массив байтов, в нем лежат по порядку:
1. тип элементов в виде строки
2. количество элементов
3. сами элементы подряд

Нужно засунуть элементы в вектор. Как это лучше сделать?
Аноним 07/08/15 Птн 19:18:26 #113 №526921 
Реквестирую книгу по алгоритмам и структурам данных с нуля и примерами на С++ уровня выучил за 21 день. Также реквестирую гайд по оптимизации не улучшения читаемости и красоты программ на С++ не изменяя алгоритм их работы.
Аноним 07/08/15 Птн 19:45:59 #114 №526939 
>>526921
Algorithms in C++, Third Edition
Есть на рюском, но как обычно с переводом уровня гуглтранслейта.
Аноним 07/08/15 Птн 19:49:44 #115 №526941 
>>526939
Я похож на знатока английского? Есть то что хорошо на русский переведено?
Аноним 07/08/15 Птн 19:54:00 #116 №526944 
>>526941
Ну тогда самое время начать его учить, потому что это самый главный язык на погроммиста.
В душе неебу, не читаю корявые переводы уже давно, но до этого встречал всего пару раз не полное говно
Аноним 07/08/15 Птн 19:56:01 #117 №526945 
>>526944
Спасибо. Тогда её и почитаю. Но на русском. Там 2 книги вроде. Они же на разные темы и читать обе? Или это я не третье издание нашёл?
Аноним 07/08/15 Птн 19:59:13 #118 №526947 
>>526945
Там 5 частей разбили на две книги просто.
Аноним 07/08/15 Птн 20:26:49 #119 №526953 
>>526372
Забыл упомянуть, что оператор надо сделать friend к TvoyaMamka.
Аноним 07/08/15 Птн 21:37:02 #120 №526981 
14389726221930.png
Поясните за программу на пике. Почему начало вызывается int foo::count = 0; а только потом конструкторы?
Аноним 07/08/15 Птн 21:47:29 #121 №526988 
>>526939
Погоди. Там про оптимизацию не написано.
Аноним 07/08/15 Птн 22:09:17 #122 №526996 
>>526981
Ну он же «static» всё-таки...
Аноним 07/08/15 Птн 22:13:13 #123 №526997 
>>526981
int foo::count находится в глобал скоупе. В глобал скоупе нельзя создавать экземпляры класса.
Аноним 07/08/15 Птн 22:16:02 #124 №526998 
>>526996
>>526996
Понял. А что было бы если бы foo f1,f2,f3; Было в глобальном пространстве имён? Имело ли значение до или после int foo::count = 0; они объявлены?
Аноним 07/08/15 Птн 22:16:36 #125 №526999 
>>526998
>>526997
Тебе тоже вопрос.
Аноним 07/08/15 Птн 22:17:41 #126 №527000 
>>526903
Вектор union'ов, читаешь количество элементов, потом создаешь вектор с помощью указателей на первый и последний элемент.
Аноним 07/08/15 Птн 22:19:21 #127 №527001 
>>527000
Не, в цикле заполняешь вектор
Аноним 07/08/15 Птн 23:32:17 #128 №527015 
>>526953
Наоборот, это вредно, как правило. Потому что сериализовываться, по идее, должно только видимое извне состояние мамки. Внутри могут быть служебные данные, которые негоже использовать при выводе. Лучше сделать публичный метод у мамки, который вернет все,что необходимо напечатать.
Аноним 07/08/15 Птн 23:35:11 #129 №527018 
>>526997
Схуяли нельзя? Можно, просто порядок вызова конструкторов статических членов не определен. Гарантируется, что это произойдет до первого обращения емнип. Это и сюда >>526998 ответ, поведение будет unspecified а может даже и undefined, хуй знает, вот это было бы здорово прояснить, потому что неизвестно, в каком порядке они инициализируются.
Аноним 07/08/15 Птн 23:42:40 #130 №527021 
>>527018
Чтобы таких проблем не было надо пиать static int count=0 и не заморачиваться с отдельным объявлением и определением? Когда полезно писать так как на том пике?
Аноним 07/08/15 Птн 23:52:26 #131 №527023 
>>527021
Ну не знаю, какие-нибудь настройки хранить, когда одни параметры зависят от других. Конечно, можно и нужно юзать синглтон тогда, но общее направление понятно.
Аноним 08/08/15 Суб 13:36:25 #132 №527129 
>>525935
Нахуй пошел, говорю.
Аноним 08/08/15 Суб 16:26:08 #133 №527185 
Котоны, решил тут подтянуть немного скилл и поиграться с dll-inj и написать какого-нибудь бота.
С инжектом и хелловорлд-длл всё получилось, но вот как из этой длл мне читать нужные значения и дёргать нужные ф-ии - я нихуя не понимаю.
Может кто-нибудь тут уже занимался подобным долбоебизмом?
Аноним 08/08/15 Суб 16:28:09 #134 №527187 
>>527015
> сериализовываться, по идее, должно только видимое извне состояние мамки
Схуяли? Если сериализовать только видимое до десериализовать нельзя будет, объект не полный же.
Аноним 08/08/15 Суб 17:37:18 #135 №527212 
>>527187
Речь не идет о том, чтобы сериализовать только публичные члены-данные. Просто за установку приватных данных должны отвечать методы самого класса, если это возможно.

[code lang="cpp"]
class TvoyaMamka
{
std::size_t height_;
std::size_t weight_;

std::short weight_in_tons_; //Чтобы избежать переполнения в ряде случаев

void recalculateTons ()
{
weight_in_tons_ = weight / 1000;
}

public:

std::size_t getWeight () const
{
return weight_;
}

short getWeightInTons () const
{
return weight_in_tons_; //Используем кэшированное значение
}

void setWeight (std::size_t input_weight)
{
weight_ = input_weight;
recalculateTons ();
}

//...
};
[/code]

Если дать сериализующим функциям доступ к внутреннему состоянию объекта, то они легко могут сделать вес мамки в тоннах несоответствующим весу мамки в килограммах и нарушить инварианты. Чтобы этого не было, необходимо контролировать весь дружественный код, чтобы тот поддерживал инварианты, легко запутаться.
Аноним 08/08/15 Суб 19:24:37 #136 №527250 
Всем сап
Вот у меня как у новичка вопрос:
Прочитав эти книг из оп поста, есть шанс реально стать программистом, и нормально зарабатывать?
Аноним 08/08/15 Суб 20:56:44 #137 №527289 
>>527250
Нет.
Аноним 08/08/15 Суб 20:58:06 #138 №527293 
>>527289
Не траль, плз.
Аноним 08/08/15 Суб 21:01:48 #139 №527296 
>>527293
Ну если будешь ебошить - будешь зарабатывать.
Аноним 08/08/15 Суб 21:09:08 #140 №527304 
>>527250
Книги из оппоста это не необходимое и не достаточное условие. У каждого свой путь же. Однако собранные в одном месте хорошие материалы всегда полезны, особенно для новичка, который не знает с чего начать.
Аноним 08/08/15 Суб 22:29:28 #141 №527336 
>>527304
Ну вот я новичок, тот самый кто поднял этот вопрос. Прочитал книгу "С++ за 21" купил Прата. Читается и вроде понимается. Прочту. А что дальше?
Аноним 08/08/15 Суб 22:44:22 #142 №527347 
>>527336
> А что дальше?
Джосаттиса можно, как раз 2ое издание пару лет назад вышло.
У Майерса есть советы по С++ аж 3 книжки.
Аноним 09/08/15 Вск 00:21:01 #143 №527350 
14390688614360.jpg
>>525307
Подрастешь - узнаешь
Аноним 09/08/15 Вск 00:22:51 #144 №527351 
14390689714940.jpg
Плюсаны, киньте пожалуйста ссылку на док или книгу, где показано, как расположены объекты в памяти со всякими vtable'ами, выравниваниями, наследованием и проч. Чтобы с картинками и пояснениями.
Аноним 09/08/15 Вск 00:24:41 #145 №527352 
>>527347
Не три, а четыре. Последняя очень годная, которая на английском в оппосте. Ее кстати обещали выпустить на русском в ближайшем месяце уже.
Аноним 09/08/15 Вск 00:26:37 #146 №527353 
14390691971660.png
>>527351
В общей куче они расположены.
Куча, она же heap — двусвязный список.
Эндрю Таненбаум, «Операционные системы» и «Архитектура компьютера».
Аноним 09/08/15 Вск 00:28:45 #147 №527355 
>>527351
http://goo.gl/MdZnUp
Аноним 09/08/15 Вск 00:29:35 #148 №527356 
>>527353
Он не про кучу спрашивал, а про взаимное расположение частей объекта. На стеке то же самое будет.
Аноним 09/08/15 Вск 01:13:23 #149 №527363 
Господа, возник вопрос немного не по теме треда, но все же думаю стоит задать его здесь, тем более что Си-тред я чего-то не нашел.

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

Как вы думаете, откуда возникла такая поебота?
Аноним 09/08/15 Вск 01:43:29 #150 №527368 
>>527363
Си тред есть, вот он: http://2ch.pm/pr/res/518562.html

Хуй знает, если возможность сделать звук была изначально, то даже не знаю, зачем такое нужно было делать. Вполне возможно, что какая-нибудь бета-версия была без звука, а потом, когда добавили звук, сохраненки получили новый формат, который из-за криворукости кодеров был несовместим со старым. И решили оставить оба. Но это только моя догадка, я вообще про это в первый раз слышу и нагуглить ничего не смог.
Аноним 09/08/15 Вск 02:21:17 #151 №527373 
>>525418
using namespace std делают только школьники
Аноним 09/08/15 Вск 05:25:29 #152 №527379 
И я такой к вам с милашковопросами.

Расскажите, господа, как грамотно работать со сценой и айтемами в Qt. У меня есть поле из квадратиков, по квадратикам ходят разные ребята. Кто должен думать, как ребятам ходить? Вроде по абстракции сам айтем должен решать, как ему выбирать путь. С другой стороны, он не знает о других айтемах ничего, а сцена знает. Получается, она должна давать ему маршрут?

Еще вопрос с обработкой столкновений. Вот два айтема столкнулись. Как они должны взаимодействовать? Нужно просто проходить по collidingItems и дергать у каждого функцию "обработать столкновение", передавая туда все нужные параметры типа, не знаю, шкварит ли айтем при соприкосновении? Или этим тоже должна заниматься сцена, самостоятельно дергая айтемы за нужные веревочки?

В общем, интересно понять, как с этой системой работать нормально, не делая тонны костылей.
Аноним 09/08/15 Вск 05:33:57 #153 №527380 
Вдогонку: чтобы осуществлять взаимодействие по шагам, мне нужно каждый такт игры дергать какую-то функцию у QGraphicsItem, которая будет запускать дальнейшее поведение объекта. Корректно ли использовать для этого advance(), про которую в справке написано, что она для анимации? Или лучше сделать свою функцию?

Вообще, не очень понимаю, стоит ли опираться на стандартный айтем или все-таки сделать своего наследника (где будут прописаны всякие общие параметры, типа размера, который у всех айтемов одинаковый) и каждый раз кастовать к нему? Кастовать не хочется, но похоже Кьют рассчитан именно на такой педерастический подход. Я что-то не понимаю или реально так?
sageАноним 09/08/15 Вск 07:39:18 #154 №527386 
ПАСАНЫ ПАЯСНИТИ ЕСЛЕ Я ПРОЧИТАЮ 100500 ГОВНОКНИЖЕК И НЕ БУДУ ПИСАТЬ КОД Я БУДУ ЗАРАБАТЫВАТЬ $9000 В ЧАС??77111!!
Аноним 09/08/15 Вск 11:55:50 #155 №527407 
Освобождать память при помощи delete надо только там, где ты выделял её динамически через new?
Аноним 09/08/15 Вск 12:27:33 #156 №527412 
>>527373
только школьники пишут что с именами как в std
вот свои костыли то можно занеймспейсить
Аноним 09/08/15 Вск 12:39:59 #157 №527414 
Какие есть годные способы создания гуевых программ на C++ под винды?
Аноним 09/08/15 Вск 12:43:13 #158 №527415 
>>527407
Нет, можешь в одном месте выделить, передать указатель куда-то и там удалить. А ещё лучше не удалять память вручную, а использовать умные указатели и/или всякие принципы владения.
Аноним 09/08/15 Вск 13:46:00 #159 №527432 
>>527414
кути
Аноним 09/08/15 Вск 13:51:48 #160 №527435 
>>527386
нет))0)))0)00
Аноним 09/08/15 Вск 14:05:57 #161 №527439 
>>527386
Играй в доту. Шанс получать такие деньги там выше, чем программировать.
Аноним 09/08/15 Вск 17:30:53 #162 №527512 
Накидайте сайтов с задачами на крестах.
Аноним 09/08/15 Вск 18:21:11 #163 №527539 
14391336716950.jpg
14391336716961.jpg
>>527512
Правда, думаю, некоторые моменты могут быть уже устаревшими.
Аноним 10/08/15 Пнд 09:55:06 #164 №527748 
Реквестирую Шилдта "Шаг за шагом", в гугле ниосилил найти.
Аноним 10/08/15 Пнд 12:09:00 #165 №527770 
[code lang="cpp"]
//CLASS.H
namespace heh {
Class example {
//stuff
enum class dir_t {s_e, s_w, n_e, n_w};
void genStart();
//stuff
};
}

//CLASS.CPP
void example::genStart()
{
using s_e = dir_t::s_e; //ошибка
using s_e = typename dir_t::s_e //ошибка
}
[/code]

Хули не пашет?
Аноним 10/08/15 Пнд 12:09:51 #166 №527771 
>>527770
а, ну еще и using namespace heh; в CLASS.CPP
Аноним 10/08/15 Пнд 15:19:46 #167 №527843 
>>527748
У меня есть только бумажная, но сканера нет. Если нужно что-то конкретное из нее, то могу сфоткать, в принципе.
Аноним 10/08/15 Пнд 15:48:15 #168 №527855 
Подскажите как искать директивы для функций?
Допустим я хочу найти какая директива подключает функцию square.
Аноним 10/08/15 Пнд 16:04:37 #169 №527860 
>>527855
В шапке треда есть ссылка на cppreference. Там ищешь по имени функции, и сверху будет название хедера, в котором она объявлена.
Аноним 10/08/15 Пнд 16:09:49 #170 №527861 
>>527860
Странно, функцию square не находит.
Аноним 10/08/15 Пнд 16:26:25 #171 №527876 
>>527861
Значит нет такой функции в стандартных.
Аноним 10/08/15 Пнд 16:29:40 #172 №527877 
>>527861
Если ты это у Страуструпа нашёл, то эту функцию тебе самому надо писать вообще-то, такой нет в стандартной библиотеке.
Аноним 10/08/15 Пнд 16:40:16 #173 №527890 
>>525225 (OP)
У них есть не только виртуальный деструктор но ещё и чисто виртуальный деструктор, они там размножаются делением, в общем.

Недавно анон задавал вопрос в 87-м ньюфаг-треде:
>10 минут в крестах - почему деструктор авторы одного SDK всегда выносят из хедера в сорсы, если он обычно совершенно пуст? То есть просто две фигурные скобки. Это просто для порядка или какая-то особенность крестов?

Короче, я гуглил, гуглил... и нашёл следующее:
1) Виртуальный деструктор, объяснение на русском: http://valera.asf.ru/cpp/scpp/cppd_constructor.htm (в конце главы: «Чтобы не допускать таких ситуаций необходимо использовать виртуальный деструктор...»)
2) Чисто виртуальный деструктор: http://alenacpp.blogspot.ru/2005/03/blog-post.html и http://rsdn.ru/forum/cpp/2532634.1 и http://stackoverflow.com/questions/1219607/why-do-we-need-a-pure-virtual-destructor-in-c — похоже, это самый подробный ответ на вопрос.

Чиста конкретный виртуальный деструктор заявлен в стандарте C++65536 и скоро будет уже!!!!
Аноним 10/08/15 Пнд 17:12:34 #174 №527897 
Антош, мне нужно захватывать изображение из работающей игрушки, чет гуглил-гуглил, не осилил. Работаю в куте, хелпаните плз.
Более детально:
Открыто окно с игрой, программа получается цветные кадры из этого окна, для их последующей обработки.
Аноним 10/08/15 Пнд 18:16:25 #175 №527927 
>>527897
https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd162869(v=vs.85).aspx
Аноним 10/08/15 Пнд 19:06:29 #176 №527943 
>>527890
Ну как бы да. Но нахуя ты сюда это принес, это же азы, лол. Чисто виртуальный деструктор может быть, почему бы и нет, но он в итоге должен быть определен, поэтому его определяют либо в каждом потомке через ::, либо вне объявления класса в .cpp файле (синтаксис не позволяет определять чисто виртуальную функцию на месте). Поэтому обычно так делают только когда других чисто виртуальных методов нет, а запретить создание объектов из-за абстрактности хочется.
Аноним 10/08/15 Пнд 19:15:58 #177 №527946 
>>527890
Нееет, тут виртуальный деструктор может быть не замешан вообще. Суть такова: когда ты делаешь класс с pimpl-членами то есть в классе вместо членов указатели на них, это позволяет работать в хедере с неполными классами и уменьшить время компиляции, хэдеру не нужны полные типы для этих указателей и объявлений функций. А конструктору и деструктору - нужны, потому что они должны уметь создавать и удалять их например, когда через unique_ptr хранится это все, и конструктор инициализирует через make_unique. Конструктор обычно с телом и, понятное дело, выносится в .cpp. Но деструктор тоже выносится, несмотря на пустое тело, потому что он должен неявно вызывать deleter у unique_ptr'ов, а этот deleter, естественно, требует, чтобы объект, на который указывает unique_ptr, был полного типа. Поэтому пустой деструктор тоже выносится в .cpp, только потому что в .cpp подключаются все нужные хэдеры и тип становится полным, а не предварительно объявленным. Такие дела. Перепости это туда, где спрашивали, интересный вопрос же.
Аноним 11/08/15 Втр 06:37:49 #178 №528162 
14392642697370.jpg
Скажите, а вы на С++ только игры программируете ?
sageАноним 11/08/15 Втр 06:47:26 #179 №528163 
>>528162
Сайты пишем, сынок.
Аноним 11/08/15 Втр 09:02:17 #180 №528173 
Так что, даже когда класс-интерфейс пишешь тоже надо к нему .срр приделывать и туда деструктор выносить?
Аноним 11/08/15 Втр 14:25:26 #181 №528281 
14392923268260.png
Поясните за интересную вещь, почему при запуске этйо программки проигрывается какой-то звук?
Конкретно я заметил что на 137 звука нет, на 138 есть. Такой как ПИК!
Аноним 11/08/15 Втр 14:25:48 #182 №528282 
>>528163
Но ведь сайты пишут на хтмл + цсс + пхп?
Аноним 11/08/15 Втр 14:54:04 #183 №528304 
>>528281
Очевидно, что символ с кодом 137 используется для проигрывания звука (предупреждения) в терминале.

Алсо, ты занимаешься хуйней. Сразу выкинь using namespace, "\n" замени на std::endl, а еще установи ОПЕРАЦИОННУЮ СИСТЕМУ, чтобы не было setlocale и _getch.

мимопроходил
Аноним 11/08/15 Втр 14:56:49 #184 №528306 
>>528304
>Сразу выкинь using namespace
Без него не работает.
>"\n" замени на std::endl
Поясни где про это узнать?
>а еще установи ОПЕРАЦИОННУЮ СИСТЕМУ, чтобы не было setlocale и _getch.
На какую? У меня 7. Есть еще ноут с линуксом, но как я понял - лучшая де для с++ это вижуал, а его на линуксе нет?

Поясни пожалуйста, я, просто, недавно начал читать учебник...
Аноним 11/08/15 Втр 16:41:02 #185 №528410 
>>528173
Б-же упаси. Я же говорю, это специфические случаи. Когда у тебя настоящий интерфейс без хуев и нестатических членов, то, как правило, кроме деструктора есть еще чисто виртуальные методы иначе пустой интерфейс нахуй не нужен, лол. И тогда тебе не надо делать деструктор чисто виртуальным, достаточно просто сделать виртуальным, с пустым телом и без выноса в .cpp.
Аноним 11/08/15 Втр 16:45:31 #186 №528417 
>>528306
>не работает
Либо пишешь using std::cout и т.п. для всего, что используешь из стандартной библиотеки, либо ничего не пишешь, а в местах использования пишешь std::cout вместо cout. Это классика, блядь.
>где узнать
В шапке есть ссылка на cppreference, там можно в поиске вбить любую сущность и посмотреть.
>на какую
Если у тебя спермерка + VS, то никаких setlocale быть не должно, окстись. Все итак работает если ты не ломал настройки, хуиная голова. getch тоже не нужен, IDE автоматически добавляет "нажмите любую клавишу", только запускать надо из самой IDE, а не кликом по бинарнику, блядь.
Аноним 11/08/15 Втр 16:48:39 #187 №528418 
>>528304
Не надо заменять '\n' на std::endl просто так. endl сбрасывает кеш вывода. В цикле может здорово просадить производительность.
Аноним 11/08/15 Втр 16:49:32 #188 №528420 
>>528282
Еще js забыл. Вместо него мы тоже можем. http://www.cocos2d-x.org/wiki/How_to_bind_C++_to_Javascript
Аноним 11/08/15 Втр 16:59:55 #189 №528433 
>>528418
Добра тебе, я не знал.
Аноним 11/08/15 Втр 17:18:49 #190 №528441 
>>528417
>Либо пишешь using std::cout и т.п. для всего, что используешь из стандартной библиотеки, либо ничего не пишешь, а в местах использования пишешь std::cout вместо cout. Это классика, блядь.
Где про это почитать? Я учусь по книге Страуструпа, там нет такого, сейчас удалил namespace std; Заметил что теперь пишет на vector без std:: что он не идентифицирован.
Поясните смысл этого, в книге не написано.
>Если у тебя спермерка + VS, то никаких setlocale быть не должно, окстись.
У меня русские буквы в терминале без локала отображались как крякозябры, сетлокал исправил всё.
>getch тоже не нужен, IDE автоматически добавляет "нажмите любую клавишу", только запускать надо из самой IDE, а не кликом по бинарнику, блядь.
У меня такой код без getch запускается и сразу закрывается:
int main()
{
std::vector<int> v;
v.push_back(2.7);
v.push_back(5.6);
v.push_back(7.9);
std::cout << v[1];
return 0;
}
Аноним 11/08/15 Втр 17:22:07 #191 №528443 
14393029271180.png
14393029271181.png
>>528441
Вот сетлокал.
Аноним 11/08/15 Втр 17:35:18 #192 №528458 
>>528441
>где почитать
В книге это есть в разделе про пространства имен.
>кракозябры
Когда кракозябры, нужно исправлять консоль, а не программу. Иначе гроб гроб кладбище непереносимость.
>закрывается
Ты что-то сломал. Там сверху в панели инструментов есть кнопка переключения режимов завершения, найди ее и нажми. Или Ctrl-Alt-Пробел.
Аноним 11/08/15 Втр 17:49:07 #193 №528478 
>>528458
>В книге это есть в разделе про пространства имен.
Пока не дошёл до туда, а в чём смысл выносить using namespace std; или сразу писать с ним? 1 вариант же проще.
>Когда кракозябры, нужно исправлять консоль, а не программу. Иначе гроб гроб кладбище непереносимость.
А что исправлять? Просто, я установил чистый ВС, в общем всё.
Хотя, я не уверен. Но в книге, в начале говорили создавать win32 приложение, а я создаю empty project. Может из-за этого?
>Ты что-то сломал. Там сверху в панели инструментов есть кнопка переключения режимов завершения, найди ее и нажми.
>Просто, я установил чистый ВС, в общем всё.

>Или Ctrl-Alt-Пробел.
Ничего не даёт.
Аноним 11/08/15 Втр 18:14:32 #194 №528497 
>>528478
>в чем смысл
Не захламляется глобальное пространство имен. Когда получишь первый конфликт имен из-за подключения двух библиотек, поймешь.
>что исправлять
chcp 1251 в консольке перед запуском, например. Это все гуглится легко, попробуй.
>чистый вс
У меня пару раз была такая хуйня, из-за неправильных настроек проекта. Создай новый проект в точности как описано в оппосте и скопируй код туда. Должно помочь.
Аноним 11/08/15 Втр 18:28:18 #195 №528503 
14393068985630.png
14393068985641.png
>>528497
>chcp 1251 в консольке перед запуском, например. Это все гуглится легко, попробуй.
1 пик - что выдёт.
>У меня пару раз была такая хуйня, из-за неправильных настроек проекта. Создай новый проект в точности как описано в оппосте и скопируй код туда. Должно помочь.
Сделал как в оппике, всё равно сразу пропадает.
Но у меня немного не так как там, я создаю файл *.срр как на 2 пике.
Всё правильно?
Аноним 11/08/15 Втр 19:03:21 #196 №528521 
>>528503
project ->Properties ->Configuration Properties -> Linker -> System, select Console (/SUBSYSTEM:CONSOLE) in “SubSystem” option
Аноним 11/08/15 Втр 19:12:08 #197 №528527 
14393095287390.png
>>528521
Сделал, ничего не изменилось.
Там была пустая строка до этого.
Кстати, я юзаю vs pre-release 2015 candidate, может баги?
Хотя, я как-то делал тоже самое на комьюнити 2012 года, было всё тоже самое.
Аноним 11/08/15 Втр 19:32:15 #198 №528537 
>>528527
Такого быть не может, что не изменилось. Я только что проверил. Попробуй еще раз, и сверху выбери не Active (debug), а all configurations. Потом перекомпилируй и запускай по ctrl-f5.
Аноним 11/08/15 Втр 19:35:17 #199 №528540 
14393109175030.png
>>528537
Да, теперь работает без getch, но русский не пашет.
Аноним 11/08/15 Втр 19:37:10 #200 №528542 
>>528540
А ты попробуй сохранить сам .cpp файл в 866 кодировке.
Аноним 11/08/15 Втр 19:40:01 #201 №528545 
14393112012740.png
>>528542
Как внутри вижуала поменять кодировку?
Я саблаймом поменял на 866, вот что получилось.
Аноним 11/08/15 Втр 19:42:45 #202 №528547 
>>528545
Нет, это не то. Просто открываешь файл блокнотом и сохраняешь туда же, выбрав кодировку.
Аноним 11/08/15 Втр 19:46:21 #203 №528549 
14393115814180.png
14393115814191.png
>>528547
У меня какой-то инвалидный блокнот - 1 пик.
В саблайме я так сделал - 2 пик.
Аноним 11/08/15 Втр 19:56:42 #204 №528552 
>>528549
Ну тогда используй наиболее универсальное решение. Внутри все текстовые строки делаешь юникодовскими, двухбайтовыми. wchar вместо char, wstring вместо string. Работа с ними абсолютно такая же как с обычными. И для потоков ввода-вывода таки делаешь setlocale с пустыми кавычками во втором параметре. Тогда под любой системой будет установлена ее дефолтная локаль и не будет проблем, если у китайского юзера не окажется русского языка, но при этом твои сообщения останутся корректными, потому что юникод.
Аноним 11/08/15 Втр 20:06:10 #205 №528559 
14393127700640.png
>>528552
Ставить так: setlocale(LC_ALL, "");
Такой вопрос, а если у меня вывод идёт не в переменной, а в ковычках?

Фигня какая-то с wstring, пишет такую ошибку, что не может перевести в char*.
Если удалить w, то нормально переводит, но с крякозябрами.
Аноним 11/08/15 Втр 20:11:26 #206 №528561 
>>528559
Надо писать L"тест", чтобы был широкий литерал сразу.
Аноним 11/08/15 Втр 20:13:09 #207 №528562 
14393131896910.png
>>528561
Вообще, не понял зачем это, ну и ошибки:
Аноним 11/08/15 Втр 20:16:33 #208 №528564 
>>528562
У всех мест с кавычками так сделать надо, ну очевидно же, анон! Когда ты пишешь "твоя мамка", компилятор воспринимает это как строковый литерал const char []. Отсюда ошибки. Пиши L"...", и все будет ништяк.
Аноним 11/08/15 Втр 20:25:48 #209 №528566 
14393139486860.png
14393139486861.png
>>528564
Т.е. L ставить даже в определении?
Например, std::string test = L"тест"; ? Даже в случае когда я на русском не пишу?

У меня с wstring одни ошибки, ставил даже L перед ним, всё равно.
Аноним 11/08/15 Втр 20:36:55 #210 №528571 
>>528566
>ошибки
Ты опять не перед всеми поставил L, лол. Еще раз: перед ВСЕМИ строками в кавычках поставь L. L"\t", L"Median temperature: ", всеми, блядь. Хватит добавлять по одному L каждый раз и жаловаться на ошибки.
>даже в определении
Везде. Видишь открывающую кавычку - ставишь L.
>одни ошибки
Это из-за смешивания char и wchar. Если кратко, то в обычной вычислительной консольной программе не должно быть русского языка вообще. char это обычно байт, следовательно, поддержка русского языка для char строк оборачивается еблей с кодировками и ужасной хрупкостью с невозможностью ничего запустить на другой пекарне. Поэтому я советую в хэллоуворлдах, которые не предназначены специально для изучения локалей, использовать латиницу и не париться.

В серьезных программах, где требуется именно ввод-вывод на пользовательском языке, выделяют обычно отдельный модуль для этого. В нем используются только wstring, wchar и L"...", без смешивания с обычными строками. Это дает требуемую переносимость и надежность, но довольно громоздко, поэтому по возможности ничего просто не локализуют, опять же.
Аноним 11/08/15 Втр 20:44:15 #211 №528573 
14393150550890.jpg
ИТТ.
Аноним 11/08/15 Втр 20:46:31 #212 №528575 
14393151915510.png
>>528571
Я уже не знаю.
Вот, простейший код, везде L" поставил, всё равно выдаёт ошибку.
Аноним 11/08/15 Втр 20:47:48 #213 №528576 
>>528162
Лол. Тоже зашёл чтобы спросить. Так что вы на нём делаете?
Аноним 11/08/15 Втр 20:50:18 #214 №528577 
>>528575
wcout вместо cout же. Я в тебя верю, анон, еще немного и ты скомпилируешь его. Как же я проигрываю.
Аноним 11/08/15 Втр 20:53:43 #215 №528579 
>>528576
Вот такое, например. Твой змей одноглазый может так?
http://nz2wy3dsn52xizi.mv2s433sm4.cmle.ru/mirrors/analogliterals/analogliterals.xhtml
Аноним 11/08/15 Втр 20:59:03 #216 №528581 
14393159432550.png
>>528577
Хм... Вроде, получилось. Спасибо.
Но я не тролль, как тут написал кто-то:>>528573
Просто, я недавно начал учить язык, сейчас изучаю векторы по Страуструпу.

Ты тоже программируешь на С++, так?

Кстати, подскажи еще 2 вопроса:
1. Как сделать так, чтобы >>528521 это ставилось во все проекты автоматически? Я сейчас создал новый, там была эта строка пустая.
2. Можно ли как-то в ВС переключаться между проектами? А то я пока делаю так: закрываю текущий, открываю новый.
Аноним 11/08/15 Втр 21:01:40 #217 №528583 
>>528579
>nz2wy3dsn52xizi.mv2s433sm4.cmle.ru
Что за странное название у сайта.
Аноним 11/08/15 Втр 21:02:15 #218 №528584 
>>528581
Да не за что. Обращайся, тред для того и висит.
>автоматически
Оно и должно автоматически, по идее. Возможно, это из-за того, что не релизная версия. На релизных 2010, 2013, 2015 ставится всегда.
>переключаться
Неа, вроде никак. Но можно открыть вторую копию студии, будет два окна с разными проектами.
Аноним 11/08/15 Втр 21:03:12 #219 №528585 
>>528583
Это анонимайзер, оно залочено в рассеюшке. Власти скрывают существование пользовательских литералов!!!111
Аноним 11/08/15 Втр 21:03:48 #220 №528586 
>>528579
Что это?
Аноним 11/08/15 Втр 21:05:52 #221 №528588 
>>528586
Многомерные литералы, можно делать программу с картинками, которые сами компилируются в код.
Аноним 11/08/15 Втр 21:09:32 #222 №528592 
>>528588
Это как? https://ru.wikipedia.org/wiki/Piet Поясни по русски.
Аноним 11/08/15 Втр 21:13:38 #223 №528594 
>>528592
Ты вместо Rectangle <int> {5, 4}; пишешь
[code lang="cpp"]
o-----------o
! !
! !
! !
! !
o-----------o
[/code]
Аноним 11/08/15 Втр 21:14:19 #224 №528595 
>>528594
Разметка проебалась, ну и похуй.
Аноним 11/08/15 Втр 21:48:01 #225 №528605 
>>528594
Есть описание на русском для аутистов?
Аноним 11/08/15 Втр 22:03:08 #226 №528613 
>>528594
Ебать, почти visual autolayout, может даже круче. Хотет.
Аноним 11/08/15 Втр 22:40:16 #227 №528640 
>>526572
Учи сразу C++, а то будешь писать на C++ в стиле C.
Аноним 11/08/15 Втр 23:28:04 #228 №528654 
>>528605
Нет, но там все просто же. Гуглом переведи, делов-то.
>>528613
Там есть ссылка на файлы, подключай и вперед.
Огромные талмуды Аноним 12/08/15 Срд 02:58:44 #229 №528714 
Аноны, у меня тут лежит Прата размером с войну и мир, и почти такая же здоровая по Qt4 Шлее. Инглиша не знаю, поэтому приходится ебаться с таким пиздецом. Сил нет, лень, сука. Хочется взять и что-то как-то начать осваивать быстро, интенсивно, без повторения материала и тысяч страниц. Что-то вроде learnxinytimes только более подробно и по всему языку от и до. Чуть-чуть программировать умею, поэтому утомляет в десятый раз читать объяснения про то, что такое if-else, а среди этих объяснений умудрились затесаться важные вещи. Как быть? Может Специалиста по крестам скачать? Повторюсь, инглиша не знаю.
Аноним 12/08/15 Срд 03:05:00 #230 №528715 
>>528714
http://cmcmsu.no-ip.info/2course/
Читаешь все за 4 семестр, что относится к C++. Делаешь практические задания оттуда же. В качестве справки используешь талмуд и книги из оппоста. Когда сделаешь - считай, что начало пройдено, и можно уже читать Мейерса и остальное в оппосте.
Аноним 12/08/15 Срд 03:23:30 #231 №528716 
>>528715
Нихуя они ебашат.
Ты не понял вопрос, по-моему. Я спросил, как поменьше читать, а не как побольше читать.
Аноним 12/08/15 Срд 06:32:07 #232 №528741 
>>528716
Там получается около десяти презентаций, они совсем маленькие. И вот эта книжка, чуть больше ста страниц: http://cmcmsu.no-ip.info/download/cpp.base.oop.pdf Если ты это не можешь осилить, то я даже не знаю.
Аноним 12/08/15 Срд 06:51:00 #233 №528744 
Здарова, чуваки, добрался я до главы с передачей аргумента функции ссылкой. (читаю Страуструпа для зеленых)
Там он расписывает, мол так и так, когда нужно использовать, когда необязательно.
И появился вопрос, а есть ли разница в скорости передачи аргумента в функцию между:
- Ссылкой и обычным копированием значения в функцию (при условии, что передается обычное число, а не какой-то массив или вектор etc.)
- Ссылкой и константной ссылкой.

Надеюсь, что не слишком тупые вопросы написал.
Аноним 12/08/15 Срд 07:21:37 #234 №528752 
>>528744
1. Ссылка преобразуется в указатель, указатель по размеру обычно как int. Если что-то меньше int, по значению быстрее все равно не факт что будет, выравнивание, все дела.
2. Одинаково, константность ни во что не компилируется.
Аноним 12/08/15 Срд 08:48:33 #235 №528762 
>>528752
> 2. Одинаково, константность ни во что не компилируется.

Не всегда. Компилятор может положить константу в read-only memory для ускорения доступа.
Вообще, хороший тон - использовать константные ссылки как можно чаще. Неконстантная ссылка = выходной параметр.
Аноним 12/08/15 Срд 10:05:12 #236 №528778 
>>528741
Всё, извини, не разобрался. Про Qt что-нибудь скажешь? Может что-то подобное есть?
Ты как это на такой сайт набрел? Много в рашке такого, лол? Ну, выложенных материалов с годных вузовских семинаров, лекций...? Кроме очевидного интуита?
Аноним 12/08/15 Срд 10:53:33 #237 №528784 
>>528762
Ты путаешь константы и константные ссылки. Константность ссылки не значит ничего абсолютно в ассемблерном коде, объект уже создан в другом месте, константный или нет - все равно.
Аноним 12/08/15 Срд 10:56:09 #238 №528786 
>>528778
Я набрел на этот сайт главным образом потому что я учусь на там и в свое сдавал экзамен по этому курсу точнее, получил автомат, но энивей.
За куте не скажу, мне он не очень нравится, и я не особо интересовался. У них вроде неплохая документация, но она на ангельском, конечно же.
Аноним 12/08/15 Срд 11:04:08 #239 №528790 
>>528786
А чем qt плох?
Лол, не лень было поступать на такой дроч?
Аноним 12/08/15 Срд 11:06:59 #240 №528792 
>>528790
Слишком громоздкий, можно то же самое делать без ебли на специализированных библиотеках.
Тяжело в дрочении, легко в бою.
Аноним 12/08/15 Срд 11:26:19 #241 №528807 
>>528792
Это как? Разве он не наоборот объединяет тонну говн - звук, регэкспы, многопоточность, гуй в одно?
Аноним 12/08/15 Срд 11:35:51 #242 №528815 
>>528807
Именно из-за этого там обязательно окажется что-то, что тебе не понравится, как реализовано. Гораздо приятнее искать библиотеки по мере необходимости, не понравилась - заменил на аналогичную, и устанавливать кучу говна не надо.
sageАноним 12/08/15 Срд 12:02:36 #243 №528832 
>>528815
>и устанавливать кучу говна не надо
Ага, и вместо этого надо устанавливать еще больше говна и ебаться каждый раз.
Аноним 12/08/15 Срд 14:42:36 #244 №528915 
>>528714
Если еще дадите каких-нибудь советов, кроме лекций и книжки выше, буду благодарен. Ну, интенсивы типа. Скажите таки что-нибудь насчет бауманского Специалиста. Говно?
Аноним 12/08/15 Срд 14:49:35 #245 №528917 
>>528784
Да, ты прав, перепутал
Аноним 12/08/15 Срд 16:04:27 #246 №528956 
>>526481
У меня тоже "[code lang="cpp"]" видно
Просто они каким-то сторонним скриптом пользуются, когда это пишут. Я так понял что Абу не будет допиливать. А тот скрипт обновляется каким-то антоном, подгружает иконки с его сайта, и прочими странными вещами занимается.
Аноним 12/08/15 Срд 16:06:06 #247 №528958 
Антуаны, а учебник Дейтелов уже не котируется?
Аноним 12/08/15 Срд 16:12:38 #248 №528969 
>>527351
В стандарте это не описано. Каждый компилятор будет их располагать по-своему. А для отладочной версии он вообще все подряд будет обрамлять опкодами прерывания, чтоб при случае выхода за пределы сразу в отладчик IDE вылетать.
как учиться Аноним 12/08/15 Срд 16:47:10 #249 №528990 
Посоветуйте способ фиксирования знаний? Исходники с комментариями писать, тетрадку вести, файл текстовый или вордовский? Как конспектировать информацию, короче? Чтоб вот если забыл все после перерыва, прочитать и все вспомнить? Учу кресты, разумеется.
Аноним 12/08/15 Срд 17:00:36 #250 №529004 
Скажи, программач, не натыкался ли ты на реализацию A(звездочка) + Jump Pont Search на плюсах?
Аноним 12/08/15 Срд 18:49:04 #251 №529068 
Реквестиую книгу по оптимизации кода без изменения алгоритма работы и не важно на его красоту и читаемость. Мейерс не подходит. Т.к. ам ещё советы про читаемость и переносимость.
Аноним 12/08/15 Срд 19:02:14 #252 №529077 
>>527351
Ищи статью в RSDN magazine про vtable и прочие страшные штуки.
За много лет общая идея не изменилась, разве что компиляторы стали лучше оптимизировать все это и избавляться от лишних промежуточных сущностей.
Аноним 12/08/15 Срд 19:20:52 #253 №529094 
>>528915
Я не видел интенсивов по крестам и, если честно, сомневаюсь, что они существуют. Понимаешь, анон, кресты это сложный и объемный язык, его надо осваивать вдумчиво и серьезно. Все рассказы про 21 день это полный бред, так только питон можно выучить. Точнее, ты можешь за 21 день выучить синтаксис и простейшие примеры порешать, и такие курсы, несомненно, есть, но это ничем не лучше прочтения какого-нибудь самоучителя для ньюфагов, да чтоб потоньше. Но духу языка ты так не научишься, однозначно. Так что лучше сначала набрать базовые знания, а вот уже потом есть и годные книжки про детали, и мастер-классы тот же Мейерс ведет на ангельском, разумеется, по вполне доступным ценам.
Аноним 12/08/15 Срд 19:22:25 #254 №529098 
>>528956
Есть же ссылка в шапке на него, ставишь Greasemonkey/Tampermonkey, качаешь скрипт и вуаля.
Аноним 12/08/15 Срд 19:25:09 #255 №529099 
>>528990
У меня обычный тхтшник, в который пишу хитрые детали, good practices, вопросы, на которые сам пытаюсь ответить, ну ты понел. И периодически перечитываю его. Но самое главное это писать код, только во время написания живого кода такой тхтшник быстро наполняется. Переписывать из книжки - это совсем не то.
Аноним 12/08/15 Срд 19:32:02 #256 №529108 
>>529068
Про макрооптимизации алгоритмов асимптотика и вот это все читай Кормена "Алгоритмы", отличная классическая книга. Она не про кресты, а вообще.
Про микрооптимизации сэкономить на сложении и всякая хуйня читай "Effective STL" Мейерса, ибо детали на крестах обычно реализуются STL, а у Мейерса там больше половины про оптимизации. Еще наверни Джоссатиса про STL, там тоже много про ее оптимальное использование, но уровень выше, чем Мейерс.
Наконец, есть неплохие книжки - "Жемчужины программирования" Бентли и "Алгоритмические трюки для программистов" Уоррена мл. Там тоже не только про кресты, но описаны всякие мелкие оптимизации.
Аноним 12/08/15 Срд 19:44:43 #257 №529113 
>>529099
Есть проблема: мне по роду деятельности приходится вебмакакить и там все паттерны проектирования, гуд практисес и подобное нахуй не нужны, там это только время отнимает и непонимание вызывает, ну и вообще там плюсами даже не пахнет. Плюсы для меня - хобби, хочу когда-нибудь игрушки писать. Соответственно, я могу забросить написание кода резко и хоть на полгода из-за какого-нибудь аврала, потом захотеть вернуться и быстро "вспомнить всё".
Аноним 12/08/15 Срд 19:46:05 #258 №529115 
>>529108
Джоссатиса про STL это второе издание?
Аноним 12/08/15 Срд 19:59:51 #259 №529119 
>>529115
Ага.
>>529113
А ты пили мелкие проекты, на 1-2 вечера.
Аноним 12/08/15 Срд 20:01:12 #260 №529121 
>>529108
Спасибо.
Аноним 12/08/15 Срд 20:02:28 #261 №529123 
>>529119
Лол, это какие, к примеру?
Аноним 12/08/15 Срд 22:59:54 #262 №529206 
>>525307
Забей на сраные коллбэки, они мало того что не интуитивны, так и еще нетипобезопасны. Посмотри в сторону Qt с сигналами-слотами, они интуитивно понятны и типобезопасны.
Аноним 12/08/15 Срд 23:09:42 #263 №529209 
Поясните нюфане за лямбды. В чем профит?
Аноним 12/08/15 Срд 23:21:00 #264 №529212 
>>529206
> нетипобезопасны.
чобля
Аноним 13/08/15 Чтв 01:01:33 #265 №529240 
>>529123
Игоры, например. Напиши с нуля какой-нибудь рогалик, отличная практика для начинающего, и в графику не нужно уметь.
Аноним 13/08/15 Чтв 01:04:02 #266 №529241 
>>529206
Ты заебал, как ты, блядь, прикрутишь куте/буст/tvoa_mamka_anal_interface_lib_3000, если речь идет про работу с сишным легаси-кодом? Он не понимает ничего, кроме коллбэков, поэтому классику надо знать и точка. Куте он захотел прикрутить, вообще пушка.
Аноним 13/08/15 Чтв 01:13:20 #267 №529243 
>>529209
В том, что
[code lang="cpp"]
for (auto it = std::begin (mamkas); it != std::end (mamkas); ++it)
{
if (it->isGoodMamka ())
good_mamkas.push_back (*it);
}

//превращается в

std::copy_if (std::begin (mamkas), std::end (mamkas), std::back_inserter (good_mamkas), [] (const TvoyaMamka & momma) { return momma.isGoodMamka ();});
Аноним 13/08/15 Чтв 01:24:31 #268 №529247 
Призываю в тред знатоков WINAPI в целом и COM в частности.
Впервые столкнулся с COM, VARIANT, BSTR и тд. Выручай анон.

Есть примерно такой код (не совсем такой конечно, оставил суть вопроса).

[code]
void f1(IDispatch object, VARIANT value) {
IDispatchEx dispEx;

object->QueryInterface(IID_IDispatchEx, (void
)&dispEx);
dispEx->GetDispID(L"name", fdexNameEnsure, &dispId);

DISPID namedArgs[] = { DISPID_PROPERTYPUT };
DISPPARAMS params = { value, namedArgs, 1, 1 };
dispEx->InvokeEx(dispId, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &params, NULL, NULL, NULL); // Что тут происходит? Как оно копируется?
}

void f2(IDispatch
object) {
// Создаем VARIANT с BSTR
_bstr_t nameBstr("helloworld");
VARIANT value;
VariantInit(&value);
value.vt = VT_BSTR;
value.bstrVal = nameBstr.GetBSTR();

f1(object, &value); // добавляем наш VARIANT в object

// вот тут _bstr_t освободит память, выделенную для BSTR, насколько я понимаю
}

// Итак, у нас есть IDispatch *object;
// Вызываем функцию f2()
f2(object);

// ...

// А вот тут мы что-то делаем с object, в частности используем то, что добавили с DISPATCH_PROPERTYPUT
[/code]

Внимание, вопрос. Что происходит с VARIANT value в строчке, которую я отметил соответствующим вопросом? Если оно куда-то копируется, то копируется ли BSTR вместе с ним? В общем, не будет ли проблем в использовании объекта object после того, как функция f2() завершится? Не будет ли у него невалидный BSTR, который уже свободился?
Аноним 13/08/15 Чтв 01:29:32 #269 №529249 
>>529247
[code]DISPID dispId;[/code] в начале f1() случайно удалил
Аноним 13/08/15 Чтв 05:10:55 #270 №529280 
>>525225 (OP)
Парни у меня возник вопрос. Может ли изменить значение приватной переменной класса функция которая передана по указателю методу класса как аргумент?
Аноним 13/08/15 Чтв 05:16:24 #271 №529283 
>>529280
Сука. Как же проиграл с твоего вопроса. Ещё пол часа вникать буду.
Аноним 13/08/15 Чтв 05:18:24 #272 №529285 
>>529280
Хотя вроде вник. Она же не в области видимости класса. Нет скорее всего. Сейчас проверю.
Аноним 13/08/15 Чтв 05:29:44 #273 №529286 
>>529283
ну я вот читаю Прату. И там было задание нужно сделать что бы в классе можно было изменять переменную с помощью функции(ну либо уменьшать либо вычитать).
У меня возникло в голове несколько решений.
1) Хуярим две функции одна увеличивает другая уменьшает значение.
2) Создаем перечисление в Enume если функции значение перечисления где она внутри функции с помощью if'ов определяет что надо сделать.
3) Создаем две функции одна увеличивает, а другая уменьшает. Внутри класса один метод который принимает ссылку на одну из этих функции, и передает этой функции указатель на закрытую переменную.
Само собой вроде как второй метод оптимальный во всяком случае с моей нубо колакольник, но третий вызвал любопытство пытаюсь реализовать и не получается. Хотя возможно потому что я криворукий.
Аноним 13/08/15 Чтв 05:31:02 #274 №529287 
>>529286
>фикс
(ну либо уменьшать либо увеличивать).
Аноним 13/08/15 Чтв 05:38:15 #275 №529290 
>>529286
ах блять можно же одну функцию создать внутри класса где все будет складываться, но передавать туда либо положительные либо отрицательные значения.
Аноним 13/08/15 Чтв 06:33:31 #276 №529299 
14394368113480.png
>>529286
Тупонул. Если метод имеет доступ к значению приватного члена класса, то он может дать его как аргумент другой функции.
Почему в 13ой строке нельзя написать cout<<g(p)<<'\n'<<p<<'\n';?
Почему в 20ой строке нельзя написать A a.h(k);?
С++ без красноглазия Аноним 13/08/15 Чтв 09:59:12 #277 №529324 
Программач, успокой меня. Я захотел поучиться С++, потому что мне нравится лаконичный синтаксис, производительность. я хотел бы пилить игрушки, а в современных движках используются кресты, хотел бы писать производительные корпоративные приложения или может быть даже какие-нибудь числодробильни на тему нейронных сетей. При этом при всем использовать современное ООП-api, красивые библиотеки вроде Qt и наслаждаться жизнью. Но меня тошнит от всех этих указателей на указатель, нечитаемого кода, мамотноподобного тайп-каста и подобного пиздеца. Хочу просто писать красивые, производительные программы без байтоебли, указателеебли, типоебли и п подобных развлечений. Возможен ли С++ без всего этого или мне нужно что-то другое?
>>529299
И без подобной вот блевотины "h(int(*g)(int&))" в реальных задачах?
Аноним 13/08/15 Чтв 10:03:05 #278 №529327 
>>529324
Нет конечно, иди в шарп.
Аноним 13/08/15 Чтв 10:03:19 #279 №529328 
>>529324
Тебе наверно шарп и юнити надо.
Аноним 13/08/15 Чтв 10:16:56 #280 №529331 
>>529324
просто ты неосилятор. В этом нет ничего плохого, просто иди присаживайся у параши к тем ребятам с в футболочках Java и C#.
sageАноним 13/08/15 Чтв 10:22:13 #281 №529334 
>>529331
>к тем ребятам с в футболочках
Аноним 13/08/15 Чтв 10:41:30 #282 №529341 
>>529327
Не нрав синтаксис, привязка к майкрософту и вообще подход.
>>529328
Думал об этом, но ну его нахер, не доставляет ни то, ни другое
>>529331
Ну да, в отсутствии контроля длины массива и введении регулярных выражений спустя 30 лет развития языка - это тоже ничего плохого, но это колхоз, а я бы не хотел быть колхозником с красными глазами, я хотел бы взять достоинства языка и забыть про недостатки.

Чего вы злые какие?
Аноним 13/08/15 Чтв 10:46:28 #283 №529342 
>>529341
> не нрав привязка к майкрософту
> хотел бы пилить игрушки

Давай заново. Чего хочешь, что не устраивает и чего не хватает. Вместе решим что с этим можно сделать. Но язык мы вряд ли будем переделывать.
Аноним 13/08/15 Чтв 10:53:42 #284 №529348 
>>529342
Игры можно пилить и мультиплатформенные, и на консоли, и на носимые устройства.
Это не привязка к инструментарию, разработанному майкрософтом, меняемому по желанию левой пятки майкрософта и в соответствии с представлениями этой компании о прекрасном. Нахер такое. Нахер шарп, нахер .Net, нахер Visual Studio, нахер их понимание красоты в отношении библиотеки классов. Даже ява приятнее.
Мне нравится С++, он красивый, лаконичный в целом, а особенно красив Qt. Но вот type_cast, указатели, все эти сочетания круглых скобок с угловыми, вот это вот все уже ни разу не красиво и не доставляет. Зачем оно мне? Могу я обойтись без этого? Если хочу производительно, лаконично, читабельно, удобно для написания. Стилистически мне вполне нравится lua, php, python, больше, чем ява или шарп. В первой смущает комбайновость, перегруженность, зависимость от виртуальной машины, во втором сама суть и привязка к майкрософту. Но в любом случае, python или php я к UE4 не подключу и нужно привыкать к крестам, потому что они везде и все библиотеки под кресты. Вопрос - можно ли это сделать, не одев свитер и не испортив зрение.
Аноним 13/08/15 Чтв 10:59:07 #285 №529350 
14394527475060.jpg
>>529348
>Вопрос - можно ли это сделать, не одев свитер и не испортив зрение.
Скорее всего нет. Указатели точно нужны.


Не совсем понял. Ты хочешь писать кроссплатформенные игры на С++, но тебе не нравиться его синтаксис? Ну синтаксис ты точно не поменяешь. Можешь попытаться библиотек или фреймворков подключить, но я не знаю каких.
Аноним 13/08/15 Чтв 13:40:12 #286 №529419 
>>529324
Придется заниматься и вот этим всем, если понадобится писать аллокаторы, контейнеры и прочее своё под задачу. Другое дело, что можно таки писать читаемый код с помощью typedef, alias и auto, маленькими функциями. Поверь бро, это не сложно и есть даже проги которые парсят все эти многозвездочные объявления в человеком читаемый вид лол
Аноним 13/08/15 Чтв 14:11:10 #287 №529432 
Поясните за external linkage. Как понять то, что какая-та переменная доступна в других translation unit-ах? Есть int i в глобал скоупе в одном .cpp файле. Как к нему получить доступ в другом .cpp файле?
Аноним 13/08/15 Чтв 14:16:23 #288 №529435 
>>529299
спасибо большое, так это считается что функция из вне может изменить приватный член класса? или типа норм?
Аноним 13/08/15 Чтв 14:19:43 #289 №529437 
>>529341
совсем поехавший там есть куча других структур которые заменяют массивы и позволяют контролировать длину строки. Просто ты неосилятор.
Аноним 13/08/15 Чтв 14:27:28 #290 №529442 
>>529435
Она сама не может, это метод класса может вызвать эту функцию чтобы изменить свой член. Создатель класса в данном случае представляет такое API.
Аноним 13/08/15 Чтв 15:05:56 #291 №529454 
>>529350
Ну вот смотри, все эти языки, которые я указал, им нахер не нужны указатели, к примеру. Вопрос, почему я не могу обойтись без указателей в крестах? Синтаксис нравится, не нравятся вот эти отдельные элементы.
>>529419
Вот тут можно подробнее? Про парсеры
Аноним 13/08/15 Чтв 16:13:31 #292 №529481 
>>529435
f может изменять т.к. медот класса передают её ссылку на приватный член, а v не может изменять, а только читать т.к. медот передаёт ей только значение приватного члена класса. И никакие указатели на функцию не нужны.
Аноним 13/08/15 Чтв 16:19:02 #293 №529486 
>>529454
Richard Bornat, «Understanding and Writing Compilers»
Terence Parr, «Language Implementation Patterns»
Аноним 13/08/15 Чтв 16:21:03 #294 №529489 
>>529486
Про что они? Есть на русском?
мимопроходил
Аноним 13/08/15 Чтв 16:25:54 #295 №529492 
>>529280
Нет, не может. Видимость это уровень компиляции, зависит только от места, где функцию описана. Компилятор не знает, что ты ее потом передашь в объект класса, и видимость не дает. Наоборот, если создать в методе класса лямбду и потом отдать ее другому классу, видимость останется, потому что объявлена была внутри первого класса.
Аноним 13/08/15 Чтв 16:28:49 #296 №529498 
>>529299
1. Можно.
2. Нельзя, но если бы у тебя был только h(k) или только g(), короче, только один метод надо вызвать, то можно A ().h(k);
Аноним 13/08/15 Чтв 16:31:16 #297 №529502 
>>529341
Просто ты начал читать какой-то хуевый учебник с начала, посмотри там в конце, про STL и C++11 должно быть. Никакого байтоебства, все на высшем уровне.
Аноним 13/08/15 Чтв 16:34:10 #298 №529504 
14394728508320.png
>>529492
Функция получает приватный член от метода как аргумент. Вроде разобрались уже.

>>529498
>1. Можно.
Когда так пишу он почему-то не обновляет значение. p уже стало 1, а он всё равно пишет 0. Так надо? Зачем? Как исправить?
Аноним 13/08/15 Чтв 16:38:38 #299 №529508 
>>529454
Вот онлайн парсер для C http://cdecl.org/

На linux есть c++decl и cdecl, под винду не видел
Аноним 13/08/15 Чтв 16:41:31 #300 №529511 
Программисты, поясните, я тут видел где-то картиночку, типа язык С быстрее языка С++. Но, насколько я знаю, С++ - это как надстройка над С? Или мои знания не верны?
Просто, я читал что С и С++ одинаковы в плане кода, просто, у ++ есть доп. фичи.
И, теоретически, зная С++ я знаю С - так ли это?
Правда ли что С быстрее С++?
Аноним 13/08/15 Чтв 16:42:51 #301 №529512 
Вы реально это используете, считаете удобным и не имеете альтернатив?
>Try these examples:
>int ((foo)(void ))[3]
>declare bar as volatile pointer to array 64 of const int cast foo into block(int, long long) returning double
Зачем? Как так получилось, что все остальные языки обходятся без этого поноса, а С++ - нет?
Аноним 13/08/15 Чтв 16:43:04 #302 №529513 
>>529511
>И, теоретически, зная С++ я знаю С - так ли это?
За неделю переучишься.
>Правда ли что С быстрее С++?
Да.
Аноним 13/08/15 Чтв 16:43:53 #303 №529514 
>>529513
>Да.
Но почему? Ведь можно на С++ написать прогу, идеентичную С по коду, так?
Аноним 13/08/15 Чтв 16:45:03 #304 №529515 
>>529504
cout << a << b << c эквивалентно
operator<< (operator<< (operator<< (cout, a), b), c). Порядок вычисления аргументов не определен, поэтому у тебя компилятор считывает p до выполнения g(p).
Аноним 13/08/15 Чтв 16:46:36 #305 №529516 
>>529514
Если написать такую, то будет так же быстро, как в C. Но так никто не делает, потому что если ты хочешь писать как на C, то ты можешь написать на C, лол.
Аноним 13/08/15 Чтв 16:47:38 #306 №529517 
>>529512
>все остальные языки обходятся без этого поноса
Без функции без аргументов, возвращающей массив из трех целых?
Аноним 13/08/15 Чтв 16:48:48 #307 №529518 
>>529512
Такое только в дремучем posix-совместимом коде ты найдешь. Почему вы так любите обвинять крестогоспод в грехах, которые сами же выдумали?
Аноним 13/08/15 Чтв 16:51:02 #308 №529522 
>>529516
А в целом примерно насколько С быстре ++?
Аноним 13/08/15 Чтв 16:52:01 #309 №529523 
>>529515
В cout порядок выполнения не определён? Когда придётся использовать несколько cout чтобы такого не было? Можно как-то компилятору сказать делать всё по порядку?
Аноним 13/08/15 Чтв 16:53:30 #310 №529526 
>>529522
Очень зависит от того, какие возможности C++ ты используешь. Если учитывать оптимизации компилятора, то, думаю, 0-20%.
Аноним 13/08/15 Чтв 16:54:01 #311 №529527 
>>529522
Если программы одинаковые, то и работают одинаково быстро.
Аноним 13/08/15 Чтв 16:55:31 #312 №529530 
>>529523
Не порядок не определен. Порядок вывода определен, но он может сначала, например, вычислить и запомнить самый правый аргумент, потом вывести остальные, а затем уже его. Можно добавить точек следования, самое простое - разбить на несколько операторов, как у тебя сделано, или с помощью запятой.
Аноним 13/08/15 Чтв 16:59:41 #313 №529533 
>>529530
Покажи пример с запятыми.
Аноним 13/08/15 Чтв 17:03:30 #314 №529535 
>>529533
cout << g(p) << "/n", cout << p << "/n";
Или cout << (g(p), p) << "/n"; если тебе достаточно вывести только само p.
Аноним 13/08/15 Чтв 17:05:16 #315 №529537 
>>529517
Без >int ((foo)(void ))[3]
блеовотины, там это будет как угодно, "int foo[3]", к примеру, не не вот эта чертовщина тип((имя(тип))[размер]. Что за пиздарики под двойными скобками, зачем этот пиздец? И зачем выносить квадратные скобки наружу, раз уж решили всю хуйню внутрь запихать?
Аноним 13/08/15 Чтв 17:05:52 #316 №529538 
>>529518
Извини, я тупой и не понял нихуя.
Аноним 13/08/15 Чтв 17:08:21 #317 №529542 
>>529535
>cout << g(p) << "/n", cout << p << "/n";
Тоже самое только вместо ; стоит ,
>cout << (g(p), p) << "/n";
Это не то выводит.

Ладно. Спасибо. На нескольких cout остановлюсь.
Аноним 13/08/15 Чтв 17:08:59 #318 №529543 
>>529535
У тебя кстати слэш не в ту сторону.
Аноним 13/08/15 Чтв 17:09:56 #319 №529544 
>>529537
Затем, что ты видишь int (...) [3] и понимаешь, что после применения такой функции у тебя будет массив интов. Это удобно, потому что по объявлению функции можно понять, во что она превратит аргументы при вызове, а разбираться в ее работе не всегда хочется. Читать такие объявления тоже весьма легко и без всяких typedef, есть четкий алогритм, как читать изнутри наружу. "Найти имя сущности, читать вправо до скобки, читать влево до скобки, повторять, пока не кончится выражение".
Аноним 13/08/15 Чтв 17:11:29 #320 №529546 
>>529542
То же самое, лол, но формально это одно выражение, а не два. Это критично, если ты пихаешь в какую-нибудь функцию это.
Аноним 13/08/15 Чтв 17:13:05 #321 №529548 
>>529544
>есть четкий алогритм, как читать изнутри наружу. "Найти имя сущности, читать вправо до скобки, читать влево до скобки, повторять, пока не кончится выражение".
Точно вспомнил. Это тебе.

>>529324
http://habrahabr.ru/post/116255/
Аноним 13/08/15 Чтв 17:16:33 #322 №529551 
>>529548
http://ieng9.ucsd.edu/~cs30x/rt_lt.rule.html
Аноним 13/08/15 Чтв 17:31:28 #323 №529557 
Может кто помочь решить задачку?
Я, вроде, написал правильно, но результат не такой, какой я ожидал.
Аноним 13/08/15 Чтв 17:41:54 #324 №529563 
>>529512
> Зачем? Как так получилось, что все остальные языки обходятся без этого поноса
До 8 джавы джависты, когда им требовалось передать функцию, передавали объект анонимного класса, реализующего определённый интерфейс.
Теперь они могут передавать лямбды и функции.
Аноним 13/08/15 Чтв 17:42:52 #325 №529564 
>>529512
>((
Аноним 13/08/15 Чтв 17:43:28 #326 №529565 
>>529512
Поясните, мне 1 кажется что первые скобки во 2 цитате какие-то кривые? В частности 2 скобка.
Аноним 13/08/15 Чтв 17:52:32 #327 №529569 
>>529548
Спасибо, но что насчет внутренностей-то скажешь? (void ) - вот это и вообще двойные скобки нахуя? Почему не int foo [3]?
Что будет, если я захочу объявить массив массивов каких-нибудь объектов некоторого класса? Вообще же нечитаемый пиздец.
Аноним 13/08/15 Чтв 17:53:59 #328 №529570 
>>529569
>Почему не int foo [3]?
Потому что там не массив, а функция, возвращающая массив. Что, кстати, нельзя.
Аноним 13/08/15 Чтв 18:02:13 #329 №529571 
>>529570
Ааааа, вон оно как получается...блядь, ну реально как-то не слишком понятно. Почему тогда не написать было int [3] function foo (void)
или просто int [3] foo ()?
Зачем опять эти скобки, разделения...ебанись.
Аноним 13/08/15 Чтв 18:06:22 #330 №529574 
>>529571
Если бы функция могла вернуть массив, то было бы int foo()[3], да. А так приходится скобками звездочку отделять, чтоб компилятор не решил, что возвращается массив указателей.
Аноним 13/08/15 Чтв 18:10:28 #331 №529576 
Поясните, я точно не знаю как это называется - как нагуглить операторы, с которыми работает тип дабл?
Аноним 13/08/15 Чтв 18:37:08 #332 №529590 
>>529557
Don't ask to ask, just ask.
Аноним 13/08/15 Чтв 18:41:11 #333 №529592 
14394804713310.png
>>529590
Вот код: https://bpaste.net/show/be3d38894653
Собственно, я не знаю в чём дело, проверил 2 раза. Суть в том, что если я введу слово из спамлиста - у меня qwe и test, то они должны заменится на BLEEP, но они заменяются не корректно.
Суть кода проверки на пике.
Аноним 13/08/15 Чтв 18:47:42 #334 №529594 
14394808626480.png
>>529592
Ты понимаешь, что у тебя выделенный кусок кода перезаписывает check во время каждой итерации цикла? В итоге имеет значение только чекнулось ли оно при последней j или нет.
Аноним 13/08/15 Чтв 18:48:01 #335 №529595 
>>529574
УДОБНО.
Почему нельзя int& 3 foo () тогда?
Аноним 13/08/15 Чтв 18:48:44 #336 №529596 
>>529592
А еще рекомендую использовать ключи компилятора -Wall -Wextra -pedantic и когда компилятор тебя ткнет в то, что ты используешь int'ы вместо size_t как индекс у векторов, исправить это.
Аноним 13/08/15 Чтв 18:51:30 #337 №529598 
>>529594
Так я так и хотел.
У меня так: ЧЕК=0, берётся 1 элемент 1 массива и сравнивается со всеми элементами 2 массива.
Если во 2 массиве есть слова из 1 массива, то ЧЕК=1.
Если ЧЕК=1, то вывод такой.
ЧЕК=0.
Потом берётся 2 элемент 1 массива...

>>529596
Не понял, это одна из начальных задач по страуструпу, если что. Я пока не очень в крестах разбираюсь.
Аноним 13/08/15 Чтв 18:56:08 #338 №529600 
>>529598
>>529598
Выделенный желтым отрывок кода по сути эквивалентен следующему:
http://pastebin.com/ZHF5LBd2

Потому что в твоем внутреннем цикле все итерации кроме последней ни на что не влияют, потому что в последней check все равно затрется новым значением.
Аноним 13/08/15 Чтв 18:58:22 #339 №529601 
>>529600
Хм... Точно. Спасибо.
Аноним 13/08/15 Чтв 19:01:24 #340 №529602 
14394816846700.jpg
>>529592
Смысл закомментированного ифа до меня так и не дошел.
Аноним 13/08/15 Чтв 19:03:15 #341 №529603 
>>529602
1 - сортирует.
2 - удаляет одинаковые слова.
Аноним 13/08/15 Чтв 19:04:52 #342 №529604 
>>529603
>2 - удаляет одинаковые слова.
Что он делает я вижу, я смысла в нем не вижу. Впрочем это скорее всего просто я дебил.
Аноним 13/08/15 Чтв 19:07:59 #343 №529605 
>>529604
Судя по тому что я не решил, а ты решил, ты - не дебил.
Аноним 13/08/15 Чтв 19:39:14 #344 №529617 
>>529576
Хуй знает, но он работает со всеми, для которых это будет осмысленно. С %, возможно, не будет, с логическими тоже. С побитовыми и сдвигами должен.
Аноним 13/08/15 Чтв 23:18:53 #345 №529700 
Вы работаете программистами или сами по себе пишете?
Как вы не отвлекаетесь от программирования? А то мне тяжело сосредоточится на програмировании.
Аноним 13/08/15 Чтв 23:35:24 #346 №529707 
>>529700
Ну я, например, не работаю на фуллтайм, если ты об этом. Но свои проекты пилю, и по учебе довольно часто надо, ну и вообще интересно же.
Аноним 14/08/15 Птн 02:10:25 #347 №529747 
>>529602
1.
// for (...
{
}
2.
// for (...
// for (...
for (...
{
}
3. ???
9. PRVFEET
Аноним 14/08/15 Птн 02:49:15 #348 №529755 
>>529700
Работаю, senior c++ engineer. Дома для себя постоянно пишу что-нибудь.
Отношусь к программированию как к искусству, творчеству. Язык - инструмент, кисти и краски, например.
Быстро вхожу "в поток", могу всю ночь, например, решать какую-нибудь задачу, а утром пойти на работу.
Пару лет назад на хабре была статья про химеру программистов - создание и поддержка целой вселенной в голове в процессе работы.
Меняй отношение к делу. Если процесс нравится, то он затягивает.
Аноним 14/08/15 Птн 11:42:12 #349 №529831 
Нужен хелп, чуваки, делаю задание Страуструпа, запилил, все как требовалось и вылезает ошибка при компиляции:
Ошибка 1 error LNK2001: неразрешенный внешний символ
my.h
[code lang="c++"]
extern int foo;
void print_foo();
void print(int);
[/code]
my.cpp
[code lang="c++"]
#include <std_lib_facilities.h>
#include "my.h"

void print_foo()
{
cout << "FOO: " << foo;
}

void print(int i)
{
cout << "I: " << i;
}
[/code]
use.cpp
[code lang="c++"]
#include "my.h"

int main()
{
foo = 7;
print_foo();
print(99);
}
[/code]
Аноним 14/08/15 Птн 12:16:48 #350 №529841 
"#include"-ы должны быть в хэдере или в .cpp файле?
Аноним 14/08/15 Птн 12:20:57 #351 №529843 
>>529831
int foo не определена же. Та, что в main, будет локальной и никак не связанной с объявленной через extern.
Аноним 14/08/15 Птн 18:19:23 #352 №529960 
>>529841
В срр. В хедере должны быть только инклюды родительского класса (если есть) и библиотек. Это в идеале, естественно. Реальная жизнь может вносить свои коррективы, но нужно стараться как можно меньше инклюдить в хедеры - в основном чтобы было меньше перекомпилировать после изменений, и чтобы не пердолится с цикличными инклюдами.
Аноним 14/08/15 Птн 19:42:22 #353 №530003 
>>529841
И там и там могут быть.
Аноним 14/08/15 Птн 20:23:52 #354 №530032 
>>529324
Антоны тебя немного троллят. Одна из основных идей, заключенных в плюсах, это как раз демонтаж красноглазия.

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

Если же ты не хочешь с этим ебаться, то для тебя в C++ есть стандартные контейнеры и умные указатели. И их вполне хватает чтобы делать все, что угодно. Я более чем одинарные указатели, например, использую крайне редко, и то только для того, чтобы запихнуть их в контейнер.
Аноним 14/08/15 Птн 20:38:39 #355 №530039 
Подскажите, есть дабл, нужно в него ввести число с буквами - как это сделать?
Пример - 1m.
Аноним 14/08/15 Птн 20:39:53 #356 №530040 
>>530039
Никак. Используй string.
Аноним 14/08/15 Птн 20:41:41 #357 №530042 
>>530040
Просто, так в задаче написано, я думал, но не придумал как это сделать:
Там, просто, надо будет потом операции с числами делать. У меня, в целом, есть идея через пробел писать текст. Вот текст задачи:
>Добавьте к каждому введенному числу типа double единицу измерения; иначе
говоря, введите значения, такие как 10cm , 2.5in , 5ft или 3.33m .
Аноним 14/08/15 Птн 20:44:43 #358 №530044 
>>530042
Переводи всё в одну единицу измерения. Время в секунды,расстояние в метры и т.д. Храни значение в дабле.
Аноним 14/08/15 Птн 20:52:33 #359 №530052 
>>530040
Попизди мне тут.
>>530042
Например, пишешь:
[code lang="cpp"]
//double нельзя, можно long double
//суффикс m переводит сантиметры в метры
constexpr double operator "" m (long double num) { return num * 100.0; }
[/code]
Аноним 14/08/15 Птн 20:53:15 #360 №530054 
>>530052
Обосрался, возвращает тоже long double, конечно же.
Аноним 14/08/15 Птн 21:00:49 #361 №530062 
>>530052
Не знаю, я пока изучил простейшие функции: if, for, while.
Long double 1 раз слышу.
Ладно, сейчас подумаю как сделать...
Аноним 14/08/15 Птн 21:14:32 #362 №530075 
>>530062
не слушай того анона. это костыль. юзай string.
Аноним 14/08/15 Птн 21:16:08 #363 №530077 
>>530075
А как им в этом случае пользоваться?
Кину я значения в стринг, но они же складываться не будут.
Я бы мог сделать что-то, если бы умел определять текстовую часть и цифровую отдельно.
Ладно, я уже сделаю так, что буду писать число и стринг через пробел.
Аноним 14/08/15 Птн 21:17:53 #364 №530079 
>>530077
Тогда структурой попробуй.
Аноним 14/08/15 Птн 21:18:50 #365 №530080 
>>530079
Это как?
Аноним 14/08/15 Птн 21:24:01 #366 №530086 
>>530080
Стринг в одном поле хранишь, а дабл в другом. Пишешь функции для их сумирования или можешь оператор + переопределить.
Аноним 14/08/15 Птн 21:25:17 #367 №530087 
>>530075
Наркоманы в треде. Этот "костыль" -- мощное нововведение 11-го стандарта, созданное как раз для подобных случаев. >>530062-кун, сделай через суффиксы, как делают нормальные современные пацаны.
Аноним 14/08/15 Птн 21:38:23 #368 №530091 
>>530075
Костыль? Костыль? А лямбды тоже костыль? Правильно, нахуя эти непонятные квадратные скобки, лучше еще один функтор именованный написать. unique_ptr тоже костыль? Деды raw-pointers с дерьмом вместе ели, и мы будем. Чего там, variadic templates тоже костыль. Нахуя нам эллипсисы непонятные, пачки какие-то, лучше через void * сделать! Стандартизация не нужна! Даешь C с классами!
>>530086
Пиздос. Я даже это комментировать не буду.
Аноним 14/08/15 Птн 21:39:09 #369 №530094 
14395775490800.png
>>530087
Я, вообще, так сделал, по простому.
https://bpaste.net/show/4c4f17c7f50f
Можешь подсказать, а как с твоего лонг дабла сделать? Я не совсем понял.

Только понял - если вводить так как я сделал, всё верно же получается, пикрелейтед. Я думал выдавать ошибку будет, ведь разрыв по пробелу происходит?
Почему если я пишу 4ft, то разрыв всё равно идёт, а не пишет ошибку?
Аноним 14/08/15 Птн 21:43:40 #370 №530102 
>>530094
[code lang="cpp"]
//Пусть оператор с long double из предыдущего уже описан где-то раньше
long double distance1 = 10.0; //10 сантиметров
long double distance2 = 10.0m; //10 метров = 1000 сантиметров
[/code]
Аноним 14/08/15 Птн 21:44:55 #371 №530103 
>>530094
Немного не в тему вопрос, но я только задумался: если надо не считать наибольшее и наименьшее значения, а у меня всего 1 или 2 значения вбито - их надо будет считать или нет?
Вроде, 1 значение является и наибольшим и наименьшим, но я не уверен.
Аноним 14/08/15 Птн 21:54:43 #372 №530111 
>>530094
Если кому интересно, вроде написал программку, это конечная задача по учебнику Страуструпа в главе 4.7: https://ideone.com/lAsE78
Если что неправильно написал - пишите, я открыт для критики.
Аноним 14/08/15 Птн 23:25:02 #373 №530175 
не понимаю, почему в гцц не сделано sso для строк.
шёл 2015 год, а мы до сих пор имеем тормозмозные аллокейшены в каждом присваивании и в каждой подстроке
в обоссаном выжеэл студии 2003 года уже был сделан sso для строк!
вы тут про высокие материи, мол лямбды и вариадики - это прорыв, при этом для юник_птр в ++11 нет мейк_юник, при том что маке_шаред всё таки есть, надо писать километровые строки в коде и скроллить это говно по горизонтале, каждую версию ожидаешь, что избыточного кода станет меньше, а в итоге почти та же ссанина что и 10 лет назад,
ссука для сетки ни одной отдельной либы, только монстры типа буста и кьюте или нужно использовать сишное говно от системы, где кода проверки ошибок на порядок больше, чем реальной работы
Аноним 14/08/15 Птн 23:43:09 #374 №530208 
>>530175
>не сделано sso для строк
Ну поставь SGI реализацию, если тебе так критично.
>нет мейк_юник
>2015
Пора бы уже про 14 подумать, в нем все есть. И основные фичи реализованы в компиляторах.
>для сетки ни одной отдельной либы
Casablanca же, маленькая, шустрая, все фичи из новых стандартов поддерживает.
Аноним 14/08/15 Птн 23:57:32 #375 №530234 
>>530111
В сантиметре сто метров, замечательно.
Аноним 14/08/15 Птн 23:59:12 #376 №530240 
>>529755
Если не секрет, спали зарплату.
Аноним 15/08/15 Суб 00:14:25 #377 №530263 
>>530234
Почему?
>if (value == "cm")
>array.push_back(number);
>else if (value == "m")
>array.push_back(number / 100);
Если см, то добавляем так, если метры, то делим на 100.
Аноним 15/08/15 Суб 00:20:39 #378 №530269 
>>530263
Давай проведем анализ размерностей.
Что известно: 100 см/м.
На входе:
1. number :: см => array.push_back :: см -> ()
2. number :: м => array.push_back :: (м / (см / м)) -> ()
Раскрываем скобки: м / (см / м) = м^2 / см
Получаем несоответствие - с одной стороны push_back принимает сантиметры, а с другой - квадратные метры на сантиметр.
Аноним 15/08/15 Суб 00:39:26 #379 №530293 
>>525225 (OP)
Короче спрошу здесь, не хочу отдельный тред создавать.

Есть предположим ВЕКТОРЫ и МАТРИЦЫ и это все надо перемножать. На CPU это ОЧЕ долго, поэтому я хочу воспользоваться возможностями GPU. Но при этом не хочу покупать этот самый GPU, потому что он стоит денег, даже самый днищенский.

Сейчас есть процессоры с типа встроенной видюхой. Есть материнские платы со встроенной видюхой. Потенциала этого барахла хватает, чтобы показывало десктоп, делаю вывод, что должно хватит и на матрицы.

Вопросы такие.
1) Есть ли библиотеки для прямого доступа к возможностям встроенного в мать/проц GPU и если так, то на каких машинах это будет работать. Без анальных привязок и кросс-платформ.

2) Можно ли использовать opengl в таком случае и перемножать матрицы на вертекс шейдере? Какая версия opengl будет доступна? Насколько кросс-платформенно?
Аноним 15/08/15 Суб 00:48:11 #380 №530304 
>>530293
>1) Есть ли библиотеки для прямого доступа к возможностям встроенного в мать/проц GPU и если так, то на каких машинах это будет работать. Без анальных привязок и кросс-платформ.
Касательно Intel - только DirectCompute или C++AMP а он внутри все равно использует DC. Вроде AMP пытались прикрутить и к clang.
Аноним 15/08/15 Суб 00:50:05 #381 №530306 
>>530304
>DC
Это что такое?

>Intel
Хотелось бы одно решение для всех процов.
Аноним 15/08/15 Суб 00:51:34 #382 №530309 
>>530306
>Это что такое?
>DirectCompute
Приношу свои извинения, в глаза ебусь к вечеру.
Аноним 15/08/15 Суб 00:52:34 #383 №530313 
>>530111
Куда ж столько ифов, свитч же есть.
Аноним 15/08/15 Суб 00:53:46 #384 №530314 
>>530306
>Хотелось бы одно решение для всех процов.
ну вот попробуй это: http://www.hsafoundation.com/bringing-camp-beyond-windows-via-clang-llvm/
Там через OpenCL, поди и на AMD заведется.
Аноним 15/08/15 Суб 00:58:29 #385 №530317 
>>530314
Хотя там ссылки теперь ведут на Kalmar, а он, суда по всему, не будет работать с Intel. Но если тот же код скомпилить Visual C++, то запустистя на Intel. Но только под винду.
Короче хз.
Аноним 15/08/15 Суб 00:58:30 #386 №530318 
>>530314
А зачем здесь компилятор и что им компилировать? Если весь проект на нем пересобирать, то лучше сразу шейдер написать.

> OpenCL
Я вот о нем как раз и думал. Поясни за него. Насколько он мне подходит?
Аноним 15/08/15 Суб 01:00:31 #387 №530320 
>>530318
ох ты, судя по https://software.intel.com/en-us/articles/opencl-drivers#iris
они добавили поддержку OpenCL для интеловских GPU.
Значит OpenCL тебе подходит.
Аноним 15/08/15 Суб 01:03:33 #388 №530322 
>>530320
Я правильно понимаю, что оно не будет работать на нонейм GPU в материнке асуса?
Аноним 15/08/15 Суб 01:06:00 #389 №530325 
>>530322
что еще за материнка?
Аноним 15/08/15 Суб 01:12:04 #390 №530328 
>>530325
Конкретная модель значения не имеет.

Обычная материнка со встроенной видюхой, года так 2011 выпуска.

Я хочу использовать как можно более дешевый хардвар, но иметь доступ к GPU. Мне не нужны йоба вычисления как в крузисе, нужен параллелизм хоть какой-то.
Аноним 15/08/15 Суб 01:16:42 #391 №530330 
>>530328
>Конкретная модель значения не имеет.

И как мы тебе подскажем нужный софт не зная железа? Совсем аутист или тут битва экстрасенсов?
И вообще, 2015 год, купи б/у видяху за 50 баксов, даже в круизис на средних поиграешь.
Аноним 15/08/15 Суб 01:18:14 #392 №530331 
>>530330
Вспомнил, там nForce 630a чипсет.
Аноним 15/08/15 Суб 01:19:54 #393 №530332 
>>530331
Короче это древнее говно мамонта, но зато дешевое.

>50 баксов
Это удорожает конечное изделие. Или ты думаешь, я такой нищеброд, который хочет поиграть в ПАРАЛЛЕЛИЗМ и копейки считает?
Аноним 15/08/15 Суб 01:21:53 #394 №530333 
Поясните за поиск работы ньюфагу, стоит вообще вскрывать эту тему? Или лучше сразу выбрать какое-нибудь джава-говно без такого охуевшего порога вхождения?
Аноним 15/08/15 Суб 01:21:55 #395 №530334 
>>530331
>>530332
OpenCL работает на nForce 630, так что можешь набигать.
Аноним 15/08/15 Суб 01:26:42 #396 №530338 
>>530334
Меня не конкретно этот хлам интересует, а в целом подобный хлам как класс. Чтобы грубо говоря запустилось на любом говне, где есть хоть какое-то gpu - процессорное, чипсет в материнке, неважно.

Там чего с этим opencl делать? Фреймворк нужно ставить для конкретного типа gpu?
Аноним 15/08/15 Суб 01:29:35 #397 №530341 
>>530338
Вот кстати двачую вопрос. Будет ли OpenCL полностью кроссплатформенным решением? Условно говоря, везде, где есть C++ компилятор, компилируешь его исходники и используешь пусть даже и с различным быстродействием на разных архитектурах. Если нет, то есть ли в природе что-то подобное?
Аноним 15/08/15 Суб 01:30:29 #398 №530343 
>>530334
>OpenCL работает на nForce 630
Ну-ка пруфы!
Судя по http://www.gpu-tech.org/content.php/162-Nvidia-supports-OpenCL-1.1-with-Geforce-280.19-Beta-performance-suffers
nForce 630a относится к GeForce 7000. А GPGPU появился только в 8000.
Аноним 15/08/15 Суб 01:31:38 #399 №530345 
>>530341
>Будет ли OpenCL полностью кроссплатформенным решением
Да. нужен только OpenCL драйвер для интересующего устройства на клиентской машине.
Аноним 15/08/15 Суб 01:33:07 #400 №530348 
>>530345
Отлично, спасибо. Тогда в ближайшее время попробую вкатиться, ибо давно пора расширять горизонты.
Аноним 15/08/15 Суб 01:33:58 #401 №530349 
>>530345
>нужен только OpenCL драйвер для интересующего устройства на клиентской машине

Вот это не особо радует, тупой пользователь может не сообразить.

Еще вопрос.
Современные процы все с GPU на борту идут? Самые дешевые днищенские модели у интела и амд тоже с ним?
Аноним 15/08/15 Суб 01:35:05 #402 №530351 
>>530338
>Меня не конкретно этот хлам интересует, а в целом подобный хлам как класс. Чтобы грубо говоря запустилось на любом говне, где есть хоть какое-то gpu - процессорное, чипсет в материнке, неважно.
Главное, чтобы железка была с GPGPU, причем с достаточной для твоего кода Compute Capability. Можно, конечно, и шейдерами на OpenGL вычислять, но это уже прошлый век, и вряд ли ты найдешь сейчас для этого нормальную библиотеку.
Аноним 15/08/15 Суб 01:35:31 #403 №530352 
>>530349
Ноуп, далеко не все процессоры идут с GPU.
Аноним 15/08/15 Суб 01:36:09 #404 №530353 
>>530349
>Вот это не особо радует, тупой пользователь может не сообразить.
У nVidia и Intel они ставятся с обычными графическими дровами, судя по всему.
Аноним 15/08/15 Суб 01:38:24 #405 №530354 
>>530351
>и вряд ли ты найдешь сейчас для этого нормальную библиотеку

Руками напишу в крайнем случае. Я правильно понимаю, что в этом случае будет работать почти на любой хуйне?
Аноним 15/08/15 Суб 01:40:34 #406 №530356 
>>530354
ну вобщем-то да. Главное чтобы не fixed pipeline был.
Аноним 15/08/15 Суб 01:43:52 #407 №530358 
14395922323930.jpg
14395922323941.jpg
>>530356
>fixed pipeline

Ну это уж совсем днище, лол.

Кстати есть очень бюджетные процы всего за пару тысяч с интел HD. Это приемлемо. Походу все-таки самый нормальный вариант на такие ориентироваться.

На тебе няшек короче, спасибо.

Аноним 15/08/15 Суб 02:13:24 #408 №530364 
Реквестирую мануал по инклудам, чтоб прям расписано все было и побольше примеров, а то устал перед каждой компиляцией скрещивать пальцы, в надежде, что не вылезут сообщения, типа "already declared in:"
Аноним 15/08/15 Суб 02:18:31 #409 №530366 
>>530364
Я так понимаю, что у тебя проблема с инклюдингом собственного кода. Просто разделяй все на хедеры и cpp файлы (если не шаблоны). инклюдить надо только хэдеры. Инклюдить можно и из хедеров, и из цпп. Во всех хедерах используй header guard, загугли что это.

А вообще можешь опубликовать свой проект, и я тебе поясню, что ты с инклюдами делаешь не так.
Аноним 15/08/15 Суб 02:36:48 #410 №530369 
>>530364
Google << include guard << pragma once.
Аноним 15/08/15 Суб 05:08:58 #411 №530379 
>>530366
>>530369
Я использую гарды, просто иногда получаются дабл и циркулярные включения. Например есть a.h с классом clА, у которого методы и члены статичные - 3 члена-класса clB, clC, clD и одна int переменная varE. То есть уже идут включения b.h, c.h, d.h. У clD есть метод, который должен менять статическую переменную-член clA. Вот и получается, что a.h включает b.h, c.h, d.h, а d.h включает a.h, который включает в себя b.h, c.h, d.h, а d.h...
Аноним 15/08/15 Суб 05:28:27 #412 №530383 
>>530379
>У clD есть метод, который должен менять статическую переменную-член clA.

То есть он получает clA либо по ссылке, либо по указателю? Используй forward declaration.
Аноним 15/08/15 Суб 05:59:58 #413 №530384 
>>530383
Нет. Он прям берет и clA::varE = 0; Ну или на крайний случай можно сделать clA::setE(0);
Аноним 15/08/15 Суб 06:14:14 #414 №530387 
>>530384
>>530379
Подозреваю, что у тебя ошибка в чем-то другом, либо ты что-то совсем не так делаешь.

Вот так надо, все работает. Что-то непонятно - спрашивай.
http://pastebin.com/gNBziyPy

Ключевые знания - declaration - в хедерах. Имплементейшн - в cpp файлах. Cpp файлы инклюдить никогда не надо.
Аноним 15/08/15 Суб 06:18:52 #415 №530389 
>>530387
>Ключевые знания - declaration - в хедерах. Имплементейшн - в cpp файлах.

Поправка - это если не темплейты. В темплейтах все через жопу, и там нет .cpp и .hpp - там все в хедерах.
Аноним 15/08/15 Суб 06:48:11 #416 №530392 
>>530387
А поч ты инклудишь classB.hpp и в classA.hpp, и в classA.cpp?
Аноним 15/08/15 Суб 06:52:29 #417 №530393 
>>530392
Потому что в таком порядке писал код. Сначала этот инклюд мне понадобился в ClassB.cpp, а потом - в ClassB.hpp. От того, что он и там и там, ничего плохого не будет.
Аноним 15/08/15 Суб 07:25:16 #418 №530396 
Он не понимает отличие объявления от определения. Сколько же я с этим ебался в свое время.
Объявление "чего-то" можно хоть куда напихать, главное чтоб определение этого "чего-то" было одно на весь проект. Поэтому его обычно и засовывают в .сpp
Аноним 15/08/15 Суб 07:30:11 #419 №530398 
>>530396
Я тоже в свое время нихуя ничего этого не понимал и ебался, ебался, ебался с круговыми зависимостями.
Аноним 15/08/15 Суб 07:30:14 #420 №530399 
>>530396
Это наверн если объявление с гвардами, можно понапихать. А то вспоминаются всякие already defined ошибки
Аноним 15/08/15 Суб 07:31:43 #421 №530400 
>>530399
Да не. Как раз таки "defined" значит определение, а forward declaration можно делать спокойно, типа

[code lang="CPP"]
class A;

class A {
private:
A* a;
};
[/code]
Аноним 15/08/15 Суб 11:15:26 #422 №530436 
>>529843
А как тогда правильно сделать, чтобы в обоих .cpp была видна одна и та же переменная foo?
Аноним 15/08/15 Суб 11:50:21 #423 №530447 
14396286216750.png
>>530436
Ох уж этот Страуструп.
Аноним 15/08/15 Суб 12:02:43 #424 №530454 
Считается ли нормальной практикой раскидать определения классов из одного хидера в несколько .cpp файлов? Я хотел сделать разные хидеры, но оба класса используют один и тот же struct в типах аргументов методов.
Аноним 15/08/15 Суб 12:15:34 #425 №530458 
>>530454
Обычно так не делают. Обычно 1 хедер - 1 файл реализации.

>Я хотел сделать разные хидеры, но оба класса используют один и тот же struct в типах аргументов методов.

Не понял, в чем проблема? Инклюдь заголовочный файл с этой структурой.
Аноним 15/08/15 Суб 12:23:58 #426 №530462 
>>530454
Хотя не, откомпилилось http://pastebin.com/9wtmdfCg
Но вот тут непонятно: если убрать из a.h, в самом конце, #include "b.h", компилятор ругается про форвард деклар и "error: invalid use of incomplete type class B"
Аноним 15/08/15 Суб 12:25:24 #427 №530463 
>>530462
Пиздец. Зачем какие-то инклюды в конце хедера? Где хедер гарды?
Аноним 15/08/15 Суб 12:31:06 #428 №530467 
>>530462
>>530458
И я попытался посмотреть код дума3, и так понял, что там все файлы инклудят один хидер с форвард декларами и прочим, а тот инклудит все остальные хидеры. Но не понял, откуда https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/GuiModel.h знает про vertCacheHandle_t

>>530463
Это не весь код, гарды есть. Но про инклуд в конце я сам не понимаю: компилятор без #include "b.h" ругается.
Аноним 15/08/15 Суб 12:33:40 #429 №530468 
>>530467
Очевидно, это значит, что ты где-то инклюдишь a.h и пытаешься использовать B, а b.h не инклюдишь
Аноним 15/08/15 Суб 12:33:52 #430 №530469 
>>530467
>компилятор без #include "b.h" ругается.
Дай угадаю, у тебя в cpp инклюдится a.h?
Аноним 15/08/15 Суб 12:44:39 #431 №530475 
>>528304
>"\n" замени на std::endl
Платина. Не надо так делать. Самое лучшее -- глобальная константа:

const char newline = '\n';
Аноним 15/08/15 Суб 12:45:21 #432 №530476 
14396319210100.jpg
Анон, я тут начал осваивать Qt, можешь посоветовать годный учебник/туториал по этой штуке?
Аноним 15/08/15 Суб 12:47:42 #433 №530477 
>>530468
В a.cpp есть метод:

bool A::aaa(structA var1) {
a_b->bbb(var1);
return false;
}

вот тут и ругается.
Аноним 15/08/15 Суб 12:48:40 #434 №530478 
>>530477
Не понял, A и structA - разные вещи?
Аноним 15/08/15 Суб 12:49:44 #435 №530481 
>>528441
>пишет на vector без std:: что он не идентифицирован
Он же не знает, что ты хочешь вектор именно из стандартной библиотеки языка. Ему нужно сообщить об этом, а то вдруг у тебя самопальный вектор из говна и палок.

Алсо, не слушай его. Локаль надо выставлять (как ты и делаешь), а вместо гетча пиши православный кроссплатформенный std::cin.get(ch):

include <iostream> //std::cin / std::cout
char ch;
std::cin.get(ch);
Аноним 15/08/15 Суб 12:50:27 #436 №530482 
>>530478
A - класс, structA - struct StructA в a.h
Аноним 15/08/15 Суб 12:52:43 #437 №530483 
>>530477
Ну так ты пытаешься у B использовать метод. Чтобы его использовать, нужно знать, какие методы у него есть. А чтобы это знать, нужно заинклюдить хедер b.h
Аноним 15/08/15 Суб 12:53:43 #438 №530484 
>>530481
>а вместо гетча пиши православный кроссплатформенный std::cin.get(ch):
Проще Dev-C++ юзать, он окошко консоли сам не закрывает.
Аноним 15/08/15 Суб 12:54:49 #439 №530485 
>>530484
В Visual Studio если запускать не в режиме отладки, то тоже не закрывает
Аноним 15/08/15 Суб 12:54:52 #440 №530486 
>>530483
Теперь в a.cpp два инклуда: "a.h" и "b.h"
Но компилятор ругается: undefined reference to `B::bbb(structA)'
Аноним 15/08/15 Суб 12:56:54 #441 №530487 
>>530486
В том пастбине, который ты выложил, ничего нет про определение B::bbb
Аноним 15/08/15 Суб 12:58:31 #442 №530488 
>>530487
Да, все, спасибо. Это просто предупреждение от компилятора. Но теперь другой вопрос: как сделать пиздато? Чтоб как в думе - один файл заинклудил и все.
Аноним 15/08/15 Суб 12:59:50 #443 №530489 
>>530488
Не предупреждение, а ошибка. Предупрежедения это рекомендательные штуки, которые компилятор обычно выдает, когда подозревает, что где-то может получиться undefined behaviour.

>Но теперь другой вопрос: как сделать пиздато? Чтоб как в думе - один файл заинклудил и все.

Не ебу.
Аноним 15/08/15 Суб 13:00:23 #444 №530491 
>>530488
Так а что мешает сделать точно так же?
Аноним 15/08/15 Суб 14:30:51 #445 №530527 
>>530491
Там все запутанно.
Аноним 15/08/15 Суб 15:28:25 #446 №530566 
>>530475
Перетолстил, братюнь.
Аноним 15/08/15 Суб 18:48:19 #447 №530663 
>>530313
Я тоже сначала хотел сделать свич, но там показало что он не поддерживает этот тип переменной.

>>530269
Что-то я не совсем понял, у меня же сделано так (брал сантиметры за образец вычислений):
>if (value == "cm")
>array.push_back(number);
Если см - просто заполняем массив.
>else if (value == "m")
>array.push_back(number / 100);
Если м - делим число на 100, т.е. получим сантиметры?

>2. number :: м => array.push_back :: (м / (см / м)) -> ()
Вот тут не понял - откуда ты взял: (м / (см / м)), если у меня там м / 100 = см.
Аноним 15/08/15 Суб 18:59:31 #448 №530667 
>>530663
switch std::hash (str) же.
Аноним 15/08/15 Суб 19:26:46 #449 №530675 
>>529603
set же есть, зачем вектор? Или Страуструп из всего STL только про него рассказал?
Аноним 15/08/15 Суб 19:28:11 #450 №530676 
>>530663
>Если м - делим число на 100, т.е. получим сантиметры?
Вводим 2м, потом чтоб получить см делим на 100, получаем 0,02см. Косяк, правда?
Аноним 15/08/15 Суб 19:41:43 #451 №530683 
>>530676
Действительно, там надо было умножить, а не разделить.
Просто, странно.
Аноним 15/08/15 Суб 20:07:40 #452 №530693 
>>530663
>откуда ты взял: (м / (см / м)), если у меня там м / 100 = см.
В метре 100 сантиметров. 100 сантиметров приходятся на каждый метр. 100 см/м. Подставляем: м / 100 = м / (см/м).
Аноним 15/08/15 Суб 20:43:51 #453 №530719 
>>530675
http://lafstern.org/matt/col1.pdf
Аноним 15/08/15 Суб 20:50:42 #454 №530726 
>>530719
Ну если словей мало, то да, вектор будет предпочтительней. Но один фиг книжка написана через жопу.
Аноним 15/08/15 Суб 21:07:36 #455 №530737 
>>530379
Циклические включения -- верный признак хуевой архитектуры. Приведи какой-нибудь пример из жизни, где такое возникает, и я попробую подсказать, как надо переделать архитектуру.
Аноним 15/08/15 Суб 21:18:01 #456 №530743 
>>530737
Я ебу твою мамку, твоя мамка варит борщ тебе, ты пишешь сообщение мне.
Аноним 15/08/15 Суб 21:21:48 #457 №530746 
>>530737
Односвязный список, в котором в каждой ноде хранится указатель на следующую ноду.
Аноним 15/08/15 Суб 21:24:29 #458 №530750 
>>530743
>>530746
И где там циклические включения? Я же не о циклических ссылках говорю, еба.
Аноним 15/08/15 Суб 21:30:10 #459 №530757 
>>530750
Цилкические включения это что вообще? И о них то ничего не говорилось в >>530379
Аноним 15/08/15 Суб 21:49:09 #460 №530766 
Windows-скриптинг. Вопросы к гуру.

Аноны, сабж о локальном скриптинге и автоматизации в Windows.
BATch, VBSсript, JScript, WMI и что с этим связанно.
Да, PowerShell сюда же.
Аноним 15/08/15 Суб 21:50:31 #461 №530767 
>>530766
Туда ли ты зашел?
Аноним 15/08/15 Суб 22:12:57 #462 №530775 
unsigned int ui_one = 1 ;
signed short s_minus_one = -1 ;
if( s_minus_one > ui_one)
printf("-1 > 1 \n");

Внимание, вопрос! Какого хуя?
Аноним 15/08/15 Суб 22:15:58 #463 №530777 
>>530775
Знаковый тип приводится к беззнаковому. Получается uint_max > 1
sageАноним 15/08/15 Суб 22:25:52 #464 №530780 
>>530775
Собирать всегда надо с -Wall чтобы таких вопросов не было.
Аноним 15/08/15 Суб 22:30:13 #465 №530785 
>>530780
Рекомендую -Wall -Wextra -pedantic
Аноним 16/08/15 Вск 12:37:59 #466 №530967 
>>530566
Не понял, что не так. У тебя код '\n' пестрит, что ли?
Аноним 16/08/15 Вск 12:46:52 #467 №530968 
>>530775
Классика. При сравнении знакового и беззнакого целочисленного типа более высокий приоритет имеет беззнаковый, поэтому знаковый кастуется в него. Далее минус единица превращается в UINT_MAX и победа при строгом сравнении обеспечена всегда, кроме когда беззнаковое тоже равно UINT_MAX.

Чтобы сравнивать значения, они должны быть одинакового типа. Если они разного типа, компилятор (наверно при помощи статик_каста) приводит их к одному типу. Если бы всё приводилось к знаковым, тогда значения беззнакового, превышающие INT_MAX, кастовались бы в отрицательные, и тоже были бы "меньше" любых маленьких положительных.
Аноним 16/08/15 Вск 12:50:21 #468 №530969 
>>530475
Лучше через дефайны в зависимости от ос выбор сделать.
Аноним 16/08/15 Вск 12:53:06 #469 №530972 
>>530969
Опять начинаешь, ебучий шакал.
Аноним 16/08/15 Вск 12:56:22 #470 №530973 
>>530775
В дополнение в вышесказанному, скажу, что беззнаковый от знакового отличаются интерпретацией первого бита. В знаковом первый бит числа отдаётся под знак, в беззнаковом - ещё один двоичный разряд числа. Так и получается, что -1 побитого равен uint_max в беззнаковом.
Аноним 16/08/15 Вск 16:24:59 #471 №531073 
>>530967
В константных строках не хранят \n на конце. Хранят саму строку, которую можно вывести, добавив << std::endl. Это позволяет конкатенировать строки без ебли, потому что не все строки предназначены для вывода отдельно от других и дальнейшего возврата каретки. Когда ты выводишь литерал что само по себе уже пахнет магическими константами, но в хэллоуворлдах или для отладки можно, конечно, тем более удобнее пользоваться std::endl, это лучше читается.
Аноним 16/08/15 Вск 16:30:27 #472 №531078 
>>530968
Знаковое к беззнаковому не приводится без сужения, поэтому компилятор кукарекнет, как сказал вот этот >>530780 благородный дон. Причем это критичное предупреждение, должно вылезти даже на W2 стандартном уровне.
Аноним 16/08/15 Вск 16:36:57 #473 №531082 
Пацаны, а можно ли как-то хранить в enum char-ы? Я хочу, чтобы можно было писать вот так:
[code]enum{ A1 = 'q', A2 = 'w', A3 = 'e' };
std::cout << A1;[/code]
Можно и дефайнами это сделать, но мне интересно именно через enum. Кто что думает?
Аноним 16/08/15 Вск 16:39:12 #474 №531083 
>>531082
Это и так можно делать - в чар кастуй их.
http://en.cppreference.com/w/cpp/language/enum
Аноним 16/08/15 Вск 16:43:07 #475 №531084 
>>531082
[code lang=cpp]
enum class : char { A1 = 'q', A2 = 'w', A3 = 'e' };
[/code]
Аноним 16/08/15 Вск 16:43:38 #476 №531085 
>>531084
Ну и имя после class, конечно же.
Аноним 16/08/15 Вск 16:49:42 #477 №531086 
>>531084
Опередил, содомит. Добавлю, что глобальный enum сейчас фактически deprecated из-за того что не обеспечивает отдельную область видимости.
Аноним 16/08/15 Вск 17:04:24 #478 №531090 
>>531083
Не, кастовать неинтересно.
>>531084
Но тогда нужно перегружать оператор<<, чтобы вывести A1?
>>531086
Какая альтернатива тогда? Чем вообще лучше пользоваться для констант? #define, enum, const, constexpr? Что для чего?
Аноним 16/08/15 Вск 17:06:39 #479 №531091 
>>531090
Нет.
[code lang=cpp]
enum class imya : char { A1 = 'q', A2 = 'w', A3 = 'e' };
std::cout << imya::A1;
[/code]
Аноним 16/08/15 Вск 17:09:39 #480 №531093 
Компилятор пишет, что отсутствует оператор<< для std::ostream << imya.
Аноним 16/08/15 Вск 17:10:07 #481 №531094 
>>531091
>>531093
Аноним 16/08/15 Вск 17:12:12 #482 №531096 
>>531093
Ну так сделай ostream & operator<< (ostream & stream, imya output), хуле.
Аноним 16/08/15 Вск 17:15:43 #483 №531099 
>>531093
Это как если бы ты написал
[code lang="cpp"]
class TvoyaMamka { using width_type = int; };
std::cout << TvoyaMamka::width_type;
[/code]
И тут и там пытаешься вывести тип вместо переменной, так не пойдет. Пиши нормально, типа imya foo {imya::A1}; std::cout << foo;
Аноним 16/08/15 Вск 17:28:53 #484 №531105 
>>531096
Ну так я и спросил, нужно ли будет перегружать оператор<< или нет.
Может быть, тогда лучше будет использовать #define A1 'q' и т. д.? Дефайны слишком плохо использовать?

>>531099
Если честно, не совсем понял, что именно ты предлагаешь писать.
Аноним 16/08/15 Вск 17:36:33 #485 №531107 
>>531099
Кажется, понял. Создать объект и инициализировать A1. Сделал так, но всё равно ему нужен оператор<<.
Аноним 16/08/15 Вск 17:44:16 #486 №531111 
>>531107
Да не, я обосрался на самом деле. Без создания объекта тоже должно бы было работать. Посмотрел сейчас встроенные перегрузки для operator<<, там enum'ов нет, разумеется. И неявно к своему базовому типу они не приводятся, так что придется тебе либо делать static_cast в char, а еще лучше засунуть это приведение в самописный operator<<.
Аноним 16/08/15 Вск 17:54:11 #487 №531114 
>>531111
Да, видимо, без этого никак. А что с дефайнами? В крестовом коде их использование не является моветоном?
Аноним 16/08/15 Вск 18:05:55 #488 №531117 
>>531114
Является, лучше даже и не начинай.
Аноним 16/08/15 Вск 19:28:50 #489 №531151 
>>531114
Первое же правило у Мейерса, кстати.
Аноним 16/08/15 Вск 20:50:16 #490 №531200 
Есть какой-нибудь максимально простой и понятный гайд по указателям? Ну пиздец же.
Аноним 16/08/15 Вск 21:25:41 #491 №531215 
Есть класс, метод которого получает значение констант в качестве аргумента. Эти значения нужно присвоить при инициализации константы, но константа так же, как и метод должна быть членом класса. Как это реализовать? Можно как-нибудь переменную преобразовать в константу?
Аноним 16/08/15 Вск 21:49:11 #492 №531229 
>>531215
Сделать дружественный класс и в нем уже нужную константу?
Аноним 16/08/15 Вск 21:50:00 #493 №531231 
>>531215
Если константа и так член класса, то метод и так имеет к ней доступ, зачем её передавать в качестве аргумента?
Аноним 16/08/15 Вск 21:52:26 #494 №531232 
>>531231
Хотя я возможно не так понял. Константа и метод в одном классе?
Аноним 16/08/15 Вск 21:55:08 #495 №531234 
>>531232
Да, в одном. Но я уже нашел решение - инициализировать константу в initializer list.
Аноним 16/08/15 Вск 22:06:34 #496 №531242 
>>531234
Ок, новая проблема.
[code lang=cpp]
//EXAMPLE.h
Class Example {
public:
Example(const int&);
private:
const CONSTANTA;
void method();
};

//EXAMPLE.cpp
Example::Example(const int& value) : CONSTANTA{value}
{
//......
}

Example::method()
{
const int WIDTH = CONSTANTA / 9;
static_assert(WIDTH >= DRUGAYA_CONST, "error");
}

/error: the value of ‘WIDTH’ is not usable in a constant expression
note: ‘WIDTH’ was not initialized with a constant expression
const int WIDTH = D_WIDTH / 9; /

[/code]

Почему так?
Аноним 16/08/15 Вск 22:07:22 #497 №531243 
>>531242
const int CONSTANTA*
Аноним 16/08/15 Вск 22:08:10 #498 №531245 
14397520904160.png
>>531114
Используй по минимуму. Всегда есть typedef, constexpr, константы, экстерн и т.д.
Аноним 16/08/15 Вск 22:09:26 #499 №531246 
>>531242
void Example::method()*
Аноним 16/08/15 Вск 22:11:31 #500 №531247 
Пилите перекат, но без Алёны в шапке треда.
Аноним 16/08/15 Вск 22:26:31 #501 №531256 
https://2ch.hk/pr/res/531254.html
https://2ch.hk/pr/res/531254.html
https://2ch.hk/pr/res/531254.html
Аноним 16/08/15 Вск 22:26:46 #502 №531257 
>>531242
Потому что значение CONSTANTA на момент компиляции неизвестно.
Аноним 17/08/15 Пнд 01:53:43 #503 №531323 
Кто-нибудь, пожалуйста разжуйте мне метод пузырьковой сортировки массива. Спасибо.
Аноним 17/08/15 Пнд 04:19:24 #504 №531345 
Обязательно ли знать дискретную математику и понимать алгоритмы программисту си плюс плюс?
Аноним 17/08/15 Пнд 08:42:08 #505 №531373 
>>531345
Нет. Будешь окна собирать.
Аноним 17/08/15 Пнд 08:44:28 #506 №531377 
https://www.youtube.com/watch?v=h3PY7VSFuUU
Аноним 17/08/15 Пнд 13:21:48 #507 №531475 
>>531377
Всё правильно сказал.

>>531345
Уровня школы. И да, алгоритмы != математика. Откуда вообще эта хуйня пошла? Большинство алгоритмов в говноразработке выстраиваются обычной логикой, а всякое серьезное дерьмо с математикой делается бородатыми дедами при университетах, называется "научной деятельностью". Когда программистишка с 4 курсами говноматана с говнопараши типа МГУ начинает считать себя математиком, где умирает один Мишаня.
http://imperium.lenin.ru/~verbit/MATH/programma.html
sageАноним 17/08/15 Пнд 13:22:24 #508 №531476 
>>531475
>где-то*
fix
Аноним 20/08/15 Чтв 21:15:51 #509 №533261 
Ubuntu 12.04 g++ 4.6.3 и выше.
выполняя код на стареньком eeepc 701 я обнаружил что время выполнения задачи всё время одинаковое-47сек(выводится самой программой), хотя секундомером мерил оно доходит до 1минуты 5 сек. И доходило до 1минуты 50 сек при двойном запуске той же самой проги, программа всё равно выводит 47секунд.Пробовал запускать на настольном пк там составило 7 сек, но не стал морочиться с загрузкой ядер-там их несколько. Может ошибка какая-то в коде?
float seconds;
clock_t sstart = clock();
unsigned long wait=0;
while(wait<4000000000)
wait++;
cout<<wait<<endl;
seconds=(clock()-sstart)/CLOCKS_PER_SEC;
cout<<"Время затраченное на складывание "<<wait<<"раз=";
cout<< seconds<<endl;
Аноним 20/08/15 Чтв 21:17:11 #510 №533263 
>>533261
оппа перекатился
Аноним 28/08/15 Птн 22:11:18 #511 №536186 
Посаны, что можно прочитать/посмотреть, для того чтоб научиться программировать под шиндус?
Чтоб например можно было получать данные из другого приложения, или использовать хардверу компутера, например получить данные с компорта.

Я просто разобрался в базисе (указатели-стринги наследование, классы и прочее, дефолтные принципы и основы). И теперь уже 2 года никак не продвигаюсь. Кучи литературы для вступления, а что дальше - совершенно не ясно, не ясно с какой стороны подойти.
Я вот понемногу осваиваю программирование под мкк, очень много литературы, во всем можно разобраться. И никто не может ответить.
А как подойти к программированию под ось, так и не пойму.
Аноним 29/08/15 Суб 12:41:09 #512 №536333 
Ребят, такое вот дело.
VS 2015 не компилирует парочку кодов, но ошибок не выдает. Вместо этого компилирует прошлый успешный код. Проверил каждую строку, запускал другие коды, всё ок. Снес его, переустановил, проблема осталась. Попробовал на другом компиляторе, а там коды успешно компилируются. Что за говно?
Аноним 01/09/15 Втр 21:14:39 #513 №538065 
Аноны, что почитать по поводу работы с железом (а именно с usb устройствами)? Интересует всё по данной тематике: написание драйверов, разработка программ для обработки/отправки/получения информации с устройства и т.п.
Аноним 02/09/15 Срд 22:21:27 #514 №538630 
>>538065
Это тебе в /РА
Микроконтроллеры.
Аноним 09/09/15 Срд 02:53:43 #515 №540585 
>>536186

mfc, winapi, формочки
а лучше сразу все в помойку и ебашь на QT
Аноним 10/09/15 Чтв 18:59:38 #516 №541348 
Ей, плюсаны! Можно ли вычислять аргументы функции по умолчанию из дургого аргумента ?
foo(vector<int> &v, auto b = v.begin())
comments powered by Disqus

Отзывы и предложения