М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 17 декабря 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

32 Кб, 750x422

Вместо шапки — https://github.com/sosachbot/cppthreadhat/wiki 1 ноя, 17:37 #1085579 В конец треда | Веб

Вместо шапки — https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы — http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый — >>1081237 (OP)

Ответы855818668486895887929141991889937879401796249965009665696760968969723399143

95 Кб, 597x349

1 ноя, 17:38 #2 #1085581

>>1085579 (OP)
Ты перепутал ОПпик.

Ответы8558285668

1 ноя, 17:39 #3 #1085582

>>1085581
Проверь у себя за щекой.

Ответы85584

28 Кб, 640x424

1 ноя, 17:43 #4 #1085584

>>1085582

1 ноя, 19:46 #5 #1085655

>>1085634
Это тебя мы хуями в прошлом треде крыли? Ты на впоросы так и не ответил

16 Кб, 600x422

sage 1 ноя, 19:55 #6 #1085662

>>1085634
Двачую. Петушиный угол. Хуже только JS тред.

Ответы85668

96 Кб, 597x349

1 ноя, 20:02 #7 #1085668

>>1085581
Вот исправленная версия

>>1085662
>>1085634
>Эта жопная боль

Ответы85675856828569686721

81 Кб, 960x720

sage 1 ноя, 20:11 #8 #1085675

>>1085668
Гордится, что пишет на шаблонной параше, с недоразвитым ООП.
Когда языки типа Lisp и Smalltalk умели все это намного лучше еще 50 лет назад.

Ответы85845

1 ноя, 20:21 #9 #1085682

>>1085668
О, следующий оп-пик

sage 1 ноя, 20:56 #10 #1085696

>>1085668
Охуеть, макака на pure c наезжает. Совсем охуела? Тебя в детстве мало пиздили?

Ответы8578385788

1 ноя, 22:42 #11 #1085783

>>1085696
>pure c
Ебать говноед

Ответы85798

1 ноя, 22:44 #12 #1085788

>>1085696
Ещё один le maquaque лурочки обчитался.

Ответы85798

16 Кб, 294x308

sage 1 ноя, 22:50 #13 #1085798

>>1085783
>>1085788
Ты че зашквареный питушара тут раскукарекался? Иди говно за своими шаблонами чисти блять.
Объебок ПТУшный.

Ответы8580385833

1 ноя, 22:56 #14 #1085803

>>1085798
Чтобы твоё сообщение стало по-настоящему унизительным и оскорбительным, тебе надо всего лишь приложить свой гитхаб, чтобы мы оценили твой кругозор. Давай, покажи, что заставит нас заплакать. Мы ждём.

Ответы85861

1 ноя, 23:22 #15 #1085820

Вообще зря вы так.
У С++ есть одна полезная функция: Он показывает, каким не должен быть хороший язык программирования.
Это как бы такое воплощение всех антипаттернов в одном месте.

Ответы8582985833

1 ноя, 23:38 #16 #1085829

>>1085820
>Он показывает, каким не должен быть хороший язык программирования.
>Это как бы такое воплощение всех антипаттернов в одном месте
Ты путаешь с PHP.

Ответы8583485836

181 Кб, 636x331

1 ноя, 23:41 #17 #1085833

>>1085820
>>1085798
Шел третий тред, неосиляторы продолжали рваться.

Ответы85839

1 ноя, 23:42 #18 #1085834

>>1085829
PHP даже в этом (весьма незавидном) качестве сосет у других языков; в частности - у С++.

1 ноя, 23:42 #19 #1085836

>>1085829
>с PHP
http://hacklang.org/

Ответы85843

1 ноя, 23:45 #20 #1085839

>>1085833
>Постит с анимеговном
>Думает, что его мнение кто-то воспримет всерьез.

Ответы85841

1 ноя, 23:47 #21 #1085841

>>1085839
>униженный пыходаун продолжает рваться
>ВАШЕ МНЕНИЕ НЕВАЖНА МОЕ ВАЖНА

1 ноя, 23:50 #22 #1085843

>>1085836
https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/

Ответы85854

1 ноя, 23:51 #23 #1085845

>>1085675
Тем временем, диваны тактично сманяврировали и проигнорили, как их облили говном с ног до головы двумя простыми фактами.

inb4:
>РЯЯЯЯЯЯЯЯ СКОРАСТЬ
Ну ты же один хуй напишешь говно, которое будет по скорости уступать любому скрипту на лиспе.
А если ты и вправду нуждаешься в скорости есть С.

190 Кб, 1280x1024

2 ноя, 00:05 #24 #1085854

>>1085843
https://tnx.nl/php.html

2 ноя, 00:19 #25 #1085861

>>1085803
У меня NDA.

2 ноя, 04:40 #26 #1085986

комментим?
https://www.stack.nl/~dimitri/doxygen/manual/docblocks.html

3 ноя, 00:56 #27 #1086563

Плюсач, как мне написать функцию типа шарповской double.tryParse(string, out double), чтобы в случае успеха давала число в out, а в случае ошибки парсинга - false? Без clr и буста.

Ответы86634866448680886936

3 ноя, 06:57 #28 #1086634

>>1086563
ты хочешь узнать как она устроена?

Ответы86927

sage 3 ноя, 07:03 #29 #1086637

Этот тред зашквареный, тот кто пишет без сажи тоже шкварится, так что не советую тут спрашивать.

Ну так уж и быть, помогу ньюфане.

http://en.cppreference.com/w/cpp/string/basic_string/stol

делаешь свою функцию, обертываешь std::stoi в трай-катч и все.

3 ноя, 08:05 #30 #1086644

>>1086563
http://coliru.stacked-crooked.com/a/daa02fc1bc8e71f5

Ответы86919

3 ноя, 10:46 #31 #1086684

>>1085579 (OP)
Почему в С++ так мало метапрограммирования? Надо добавить больше, чтобы можно было метапрограммировать во время метапрограммирования:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0707r2.pdf

Ответы8669186703938779392293948

3 ноя, 12:07 #32 #1086691

>>1086684
Саттер выглядит самым охуенным из всей коммитетской пиздобратии.

3 ноя, 13:00 #33 #1086703

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

Ответы8670486719

3 ноя, 13:04 #34 #1086704

>>1086703
Это как раз очень здравая идея, в D работает на ура. Уж точно лучше того каличного варианта рефлекшена на шаблонах, который до этого предлагали.

68 Кб, 500x580

3 ноя, 14:50 #35 #1086719

>>1086703

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

499 Кб, 597x349

3 ноя, 14:52 #36 #1086721

>>1085668
Давай так лучше

3 ноя, 19:06 #37 #1086808

>>1086563
Им дали манады optional: используй, нет хочу через аргумент возвращать значение.

3 ноя, 22:30 #38 #1086895

>>1085579 (OP)
Сначала прочитать липпмана, а потом седжвика по алгоритмам, или читать все параллельно?

3 ноя, 23:37 #39 #1086919

>>1086644
Хуита.
[CODE]double kek = 0;
if (tryParse("31-11", kek))
{
std::cout<<kek;
}[/CODE]
Результат 31, шарповский tryparse тут даёт false. Если я буду писать какой-нибудь парсер, то здесь сломаюсь, зачем мне это тут

Ответы87413

3 ноя, 23:58 #40 #1086927

>>1086634
Да, и хочу написать с/с++ функцию, которая работает точно так же.

Ответы87413

4 ноя, 00:35 #41 #1086936

>>1086563
>Плюсач, как мне написать функцию типа шарповской double.tryParse(string, out double)
Посмотреть на код этой функции и переписать на C++.

Ответы86940

205 Кб, 362x427

4 ноя, 00:49 #42 #1086940

>>1086936
Открытый дотнет как-то некрасиво выглядит

4 ноя, 04:21 #43 #1086973

На чем там можно быстро набросать интерфейс для лабы? Препод говорит о cli/clr, но при использовании этой штуки у меня ломается iostream и fstream, потому что они переопределяются где-то внутри cli библиотек. При использовании Qt нужно носить с собой штук пять dll по пять мегабайт каждая и подключать сигналы к слотам, подключать еще раз, слоты сами по себе не заработают. GTK на хуй похож.

Ответы8708087413

4 ноя, 04:24 #44 #1086974

Есть класс, есть конструктор, принимающий как аргумент std::string. Если я оберну код в try/catch, сделаю условие, при невыполнении которого делаю throw, объект будет создан, или нет?
Допустим, если в строке есть буква j, объект не будет создан. Так можно сделать?

капча 843843

Ответы86975869808698387413

35 Кб, 480x451

4 ноя, 04:25 #45 #1086975

>>1086974
Имею ввиду проверку прямо внутри конструктора.

Ответы86976

4 ноя, 04:27 #46 #1086976

>>1086975
Объект будет создан

Ответы86977

4 ноя, 04:29 #47 #1086977

>>1086976
Допустим, есть у меня
// ...
Base("xyu");
Base ("pizda");
// ...
Можно ли как-то не создавать второй объект, ведь там присутствует 'z', или лббая другая хуйня? Или нужно думать, как сделать без этой ебли?

Ответы87413

4 ноя, 04:44 #48 #1086980

>>1086974
нет нельзя. раз конструктор вызван - объект создан. и вообще бросать исключения в к-ре это зашквар

Ответы86983

4 ноя, 05:07 #49 #1086983

>>1086974
> Допустим, если в строке есть буква j, объект не будет создан. Так можно сделать?
Да. Объект считается созданным только при успешном завершении работы конструктора.
Бросай исключение и твой объект не создастся.
>>1086980
>раз конструктор вызван - объект создан.
Иди нахуй.
> и вообще бросать исключения в к-ре это зашквар
Иди нахуй — 2.

Ответы87037

4 ноя, 11:35 #50 #1087037

>>1086983
двачую адеквата

4 ноя, 13:25 #51 #1087071

Суп. Надо разобраться в небольшом С++ проекте. Работаю в пердоликсе. Слышал, есть средства для автоматического построения UML диаграмм. Какую программку скочать, чтобы было легко построить диаграмму без регистрации и смс? Например, AutoDia - годна?

Ответы87121

4 ноя, 13:50 #52 #1087080

>>1086973
>GTK на хуй похож.

это значит что ты пидор

4 ноя, 14:03 #53 #1087082

Есть проект, в нём в интерфейсе метод объявлен public'ом, но во всей последующей цепочке реализазующих классов этот же метод уже protected, соответственно и вызвать его можно только через указатель на интерфейс (так он, в общем, и используется).
Это паттерн такой или самодеятельность писателей? Просто первый раз увидел пободное в этом проекте (да и вообще), куча всего другого спокойно в публиках реализует интерфейсы.

Ответы87413

4 ноя, 15:53 #54 #1087115

Подскажите долбаебу, почему такая разница?
ideone.com/DLFyvU

Ответы8711687413

4 ноя, 15:57 #55 #1087116

>>1087115
Оператори индексирования (subscript) у вектора ( [ ] ) равнозначен аналогичному оператору у обычного указателя и не модифицирует внутреннее состояние/не проверяет границы.

4 ноя, 16:05 #56 #1087120

Надо написать функцию, которая будет возвращать некий тип данных dtype. Но бывают случаи, когда возвращать нечего.

Если M={множество возможных возвращаемых значений} является подмножеством множества всех значений типа dtype, при возникновении ошибки можно возвратить значение, не входящее в M. Ну там вернуть nullptr, если обычно функция возвращает указатель на что-то, или вернуть -1, если нормальное возвращаемое значение - неотрицательный int.

Что делать, если у меня возвращаемый тип dtype - это класс или структура? Сделать функцию выбрасывающей исключение, если возвращать "нормально" нечего?

Ответы871238717587413

4 ноя, 16:06 #57 #1087121

>>1087071
cpp2dia, но вообще в виду наличия шаблонов лямбд и прочего говна генерация UML по крестам не сильно хорошая затея.

4 ноя, 16:08 #58 #1087123

>>1087120
Ну, как вариант:
template<typename T>
static T <star> bad_value() {
static T _bad_value ;
return &_bad_value;
}

Ответы87315

4 ноя, 17:20 #59 #1087159

На каком этапе изучения крестов стоит переходить к стандарту?

Ответы87413

4 ноя, 17:54 #60 #1087169

Думаю, в случае с С++ не стоит его дальше развивать вообще — слишком много унаследованных проблем. Вместо этого комитету стоило бы создать рабочую группу по разработке принципиально нового языка, базирующегося на классическом си-подобном синтаксисе и включающем все лучшее из С++, C#, D, Go, Rust, Swift и некоторых других языков. И предусмотреть некий стандартизированный механизм взаимодействия кода на двух языках — чтобы можно было переходить постепенно, добавляя в старые проекты на С++ новые файлы с кодом на новом языке.
Вот такое решение было бы пожалуй оптимальным — с одной стороны и "совмесимость" в каком-то виде осталась бы, с другой — можно все написать с нуля, учтя ошибки прошлого.

Ответы87179

4 ноя, 18:05 #61 #1087175

>>1087120
boost::optional
Скоро (C++17) его и в стандарт внесут.

Ответы8718087315

4 ноя, 18:08 #62 #1087179

>>1087169
Еще один.
>комитету стоило бы создать
Указывать другим это так мило. А главное жопу от дивана отрывать не нужно.

Ответы87182

4 ноя, 18:09 #63 #1087180

>>1087175
>Скоро (C++17)
Ты обосрался, жди C++20, C++17 уже выпустили

4 ноя, 18:11 #64 #1087182

>>1087179
Людям нужен новый язык, совмещающий в себе простоту C# или Java, и производительность Си. Но, нет, мы будем выпускать одно и то же говно с новыми слоями каждые 3 года вместо того.

Ответы8719987413

4 ноя, 19:00 #65 #1087199

>>1087182
>Людям нужен новый язык
c хуяли? это как каждые полгода нужен новый телефон? хипстеры неосиляторы блять. языки, которым десятки лет, им сложна. им нужно новые.

Ответы87203

4 ноя, 19:18 #66 #1087203

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

Ответы8726687283

4 ноя, 20:04 #67 #1087216

Бля, решил посмотреть курс по плюсам на степике, оказалась такая параша. Лектор заикается и запинается чуть ли не каждую минуту, постоянные паузы. Такое чувство, что чел не знает ничего о программирование и крестах, а просто пытается пересказать заученный текст, ничего не понимая. Лучше книжки липпмана еще ничего не придумали, все курсы это хуйня

4 ноя, 20:16 #68 #1087222

Суп, читаю статью https://habrahabr.ru/post/157961/
Там такой код:

template<typename T>
class Widget {
...
Widget(Widget&& rhs); // тип rhs - rvalue ссылка,
... // но rhs является lvalue
};

С таким комментарием:
>В конструкторе Widget rhs является rvalue ссылкой, так что мы знаем, что оно связано с rvalue (т.е. было передано rvalue), но само rhs является lvalue, поэтому мы должны преобразовать его обратно в rvalue, если мы хотим получить преимущества от того, что rhs связано с rvalue.

В первом выделенном жирным участке вроде как должно быть "тип rhs является rvalue ссылкой"? Или так и должно быть?

Ответы872848741387729

4 ноя, 22:37 #69 #1087266

>>1087203
Ты теоретик мамин что ли.
Нахуй учить ВСЕ? Я пишу на чем необоходимо в данный момент. Или, если есть выбор, на чем удобнее для данной задачи. И только теми фичами языка пользуюсь, который мне в данный момент нужны. И могу забыть а потом снова вспомнить. Главное что концепции в голове есть. Остальное все хуйня. А еще я бы убивал пидорасов, которым прямо НЕОБХОДИМО что-то новенькое, типо жабы 8-й, чтобы красиво получалось, модненько. Но java оффтопик конечно, но вы поняли. Все уже давно написано, хватит изобретать хуйню, работайте лучше.

4 ноя, 23:01 #70 #1087280

Антуаны, если у меня есть ожидание condition_variable, то в другом потоке надо сначала разлочить мютекс, а потом кинуть нотифай или не? Типа такого:
void thread1() {
...
cnd.wait(lk, checker);
...
}
void thread2() {
unique_lock lk(mtx);
...
lk.unlock(); // надо анлочить или пох?
cnd.notify_one();
}
Если конкретней, то у меня очередь ивентов, вставка в неё сигналит ждущему потоку, что бы тот обработал очередной ивент.

Ответы87286

4 ноя, 23:07 #71 #1087283

>>1087203
>размеры стандарта С++ стали уже намного больше
А читается он намного легче, чем стандарт C.
Где в стандарте C чему-то посвящено одно предложение и потом думай-гадай как оно связано и взаимодействует с другими частями языка, в стандарте C++ расписано на пару параграфов с examples и notes.

4 ноя, 23:08 #72 #1087284

>>1087222
Если говорится про ссылку, то ясно, что речь о типе.

4 ноя, 23:10 #73 #1087286

>>1087280
unique_lock сам разлочит

Ответы8728787311

4 ноя, 23:11 #74 #1087287

>>1087286
В смысле в деструкторе.

4 ноя, 23:39 #75 #1087311

>>1087286
Ну что он разлочит я знаю, я именно про момент с нотифаем интересуюсь. Нет ли такой хуйни, что ты сиглалишь, в этот момент просыпаеться второй поток, смотрит что мютекс залочен и засыпает вновь. В итоге нотифай просран.

Ответы8735087352

4 ноя, 23:42 #76 #1087315

>>1087123
>>1087175
А возвращать вместо одного элемента структуры пару из этого элемента и bool значения не комильфо? Ну то есть если это bool-значение равно false, то это как раз будет значить, что "нормального" элемента, чтобы возвратить, не нашлось?

Ответы87334

5 ноя, 00:06 #77 #1087334

>>1087315
Тоже вариант.

5 ноя, 01:16 #78 #1087350

>>1087311
Нет такой хуйни.

Ответы87361

5 ноя, 01:19 #79 #1087352

>>1087311
http://eel.is/c++draft/thread.condition#condvar-10

Ответы87361

5 ноя, 01:24 #80 #1087354

Когда передача аргументов в функцию по ссылке оправдывает себя, и почему я не могу делать это во всех функциях, где аргумент не должен меняться? Мне кажется, что type &var быстрее хотя бы потому, что не вызывает копирующий конструктор

5 ноя, 01:53 #81 #1087361

>>1087350
>>1087352
Пасиб, плюсаны.

Ответы87362

21 Кб, 475x223

5 ноя, 01:55 #82 #1087362

>>1087361
>плюсаны

5 ноя, 02:04 #83 #1087363

Крестаны, хочу в качестве доклада на C++ Russia 2018 подготовить охуенный обзор Folly. Как вы думаете, за час времени лучше выбрать несколько киллер-фич, и про них рассказать, или наоборот, по слайдику на фичу, и дохера фич просто рассказать что они есть?

Ответы8823593054

5 ноя, 03:50 #84 #1087380

Вы мне объясните, можно на C++ написать прогу, которая будет определять движок сайта, заходить в админку и пытаться брутить простыми паролями? Или лучше в python с таким вкатиться?

Ответы8740187413

5 ноя, 08:53 #85 #1087401

>>1087380
да

5 ноя, 10:45 #86 #1087413

>>1086919
>шарповский tryparse тут даёт false.
Ёбт, откуда я знаю, что шарп выдаёт? Затюнь сам. Тебе нужно, чтобы прочитана была вся строка? Используй gcount().
>>1086927
Тогда прочитай документ в котором она описана, блядь.
>>1086973
>и подключать сигналы к слотам,
Что ещё ты хотел в императивном языке?
>>1086974
> объект будет создан, или нет?
Нет, и весь код размотается до следующего уровня catch с вызовом всех деструкторов в обратном порядке.
>>1086977
Можно. Вопрос только в "нахуя".
>>1087082
Нужно больше примеров, тогда можно будет понять, зачем так сделано. Это нужно для того, чтобы код, использующий интерфейс, нигде не зависел от реализаций.
>>1087115
reserve не меняет число элементов, это делает resize. Обращение к элементу не раздвигает массив до этого элемента.
>>1087120
>Что делать, если у меня возвращаемый тип dtype - это класс или структура? Сделать функцию выбрасывающей исключение, если возвращать "нормально" нечего?
Либо возвращать костылём наподобие std::variant или optional, либо предусмотреть в dtype специальный буль empty.
>>1087159
Каждый раз, когда тебе что-то непонятно, кроме ответов на свои вопросы читай и кусок стандарта, в котором это описано.
>>1087182
>Людям нужен новый язык
Гораздо больше, чем новый язык, людям нужно использовать многолетние наработки.
>>1087222
Когда ты говоришь "тип" ты подразумеваешь всё, кроме звёздочки и амперсандов. Ссылка на тип, указатель на тип и т.д. Пример:
int a, &b=a;
Тип общий, а сущности разные: объект и ссылка на объект.
>>1087380
Можно, но в питоне это будет выглядеть короче. Нужно ли ради этого "вкатываться" в питон? Сам думай.

5 ноя, 10:45 #86 #1087413

>>1086919
>шарповский tryparse тут даёт false.
Ёбт, откуда я знаю, что шарп выдаёт? Затюнь сам. Тебе нужно, чтобы прочитана была вся строка? Используй gcount().
>>1086927
Тогда прочитай документ в котором она описана, блядь.
>>1086973
>и подключать сигналы к слотам,
Что ещё ты хотел в императивном языке?
>>1086974
> объект будет создан, или нет?
Нет, и весь код размотается до следующего уровня catch с вызовом всех деструкторов в обратном порядке.
>>1086977
Можно. Вопрос только в "нахуя".
>>1087082
Нужно больше примеров, тогда можно будет понять, зачем так сделано. Это нужно для того, чтобы код, использующий интерфейс, нигде не зависел от реализаций.
>>1087115
reserve не меняет число элементов, это делает resize. Обращение к элементу не раздвигает массив до этого элемента.
>>1087120
>Что делать, если у меня возвращаемый тип dtype - это класс или структура? Сделать функцию выбрасывающей исключение, если возвращать "нормально" нечего?
Либо возвращать костылём наподобие std::variant или optional, либо предусмотреть в dtype специальный буль empty.
>>1087159
Каждый раз, когда тебе что-то непонятно, кроме ответов на свои вопросы читай и кусок стандарта, в котором это описано.
>>1087182
>Людям нужен новый язык
Гораздо больше, чем новый язык, людям нужно использовать многолетние наработки.
>>1087222
Когда ты говоришь "тип" ты подразумеваешь всё, кроме звёздочки и амперсандов. Ссылка на тип, указатель на тип и т.д. Пример:
int a, &b=a;
Тип общий, а сущности разные: объект и ссылка на объект.
>>1087380
Можно, но в питоне это будет выглядеть короче. Нужно ли ради этого "вкатываться" в питон? Сам думай.

Показать весь текст
Ответы8745287589

5 ноя, 12:41 #87 #1087450

Друзья, появилось желание конкретно вкатиться в Айти. Заинтересовался геймдевом и созданием приложений под десктоп. Выбор пал на C++. Когда учился в колледже, то изучал Pascal и Delphi 3 курса(печально). И на последнем курсом мимокроком брали Java, но не изучали толком. Так вот, у меня вопрос, есть ли смысл вкатываться сразу в кресты? Просто некоторые советуют с чистой сишки начинать всё изучение. Или вообще другие мне советуют питон как первый серьёзный язык...

Ответы8764487723

5 ноя, 12:47 #88 #1087452

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

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

5 ноя, 12:50 #89 #1087453

Анончики. Я уже не знаю, что делать.
Нужно принять функцию вида T()(Args...) или T(SomeClass::)(Args...) и превратить её в std::function<std::string(std::string...)>. Все работает для функций объектов, для свободных функций и для std::function<T(Args...)>, но проблема в том, что для каждого из этих случаев мне приходится писать новый вариант шаблона, а вместе с ним еще две вспомогательные функции, для случая где T=void и T!=void. Но при этом в случае для std::function и свободных функций, код полностью совпадает.

А теперь вопрос: Можно ли обойтись одним шаблоном? Хотя бы для свободных функций, function и bind.

Ответы87644

5 ноя, 13:23 #90 #1087463

Сап. В функции типа:

int foo()
{
std::list<int> lis[777]; // единственная переменная
//маняпуляции с числами
return lis[42];
}

Какбэ по ходу действия, сначала значение lis[42] будет положено в стек, а потом место в памяти, выделенное под lis, будет помечено как пустое, так ведь (то есть утечки памяти не будет)?

Ответы87476

5 ноя, 14:07 #91 #1087476

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

2 Кб, 348x142

5 ноя, 14:28 #92 #1087484

https://pastebin.com/enFv8CFC
я не прошу сделать за меня просто помочь скомпилировать
и да я знаю что недоделано

Ответы874908749187644

5 ноя, 14:43 #93 #1087490

>>1087484
Почему нельзя было не обосраться?
https://pastebin.com/g2RTX0kc

5 ноя, 14:46 #94 #1087491

>>1087484
У тебя объявления функций не совпадают с определениями. Надо все исправлять

Ответы8749587536

5 ноя, 14:46 #95 #1087492

Как в VS17 отключить использование Precompiled Header??

Жутко горит с того, что в инете есть иструкции 5ти летней давности типа:

(ALT + F7) > Configuration Properties > C/C++ > Precompiled Headers > Create/Use Precompiled Header : Not Using Precompiled Headers

А в VS17 такого пункта нет , честно.

Ответы87644

5 ноя, 14:54 #96 #1087495

>>1087491
пример с лабы
https://pastebin.com/wBtT15VX
то есть этот пример с ошибкой?
значит я должен в каждой функции менять тип переменных на void .ну ладно понятно

Ответы875008750487536

5 ноя, 14:55 #97 #1087497

спасибо

5 ноя, 15:05 #98 #1087500

>>1087495
В идеале main.cpp и реализации твоих глобальных функций нужно разнести по разным файлам, а не лепить всё в один.

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

5 ноя, 15:09 #99 #1087504

>>1087495
нет, ты объявляешь много функций void vivod, но в объявлении у тебя одни параметры, а в определении - другие. Исправь в объявлении параметры на те, которые у тебя в определении, иначе будет ошибка линковщика

Ответы87536

5 ноя, 16:26 #100 #1087536

>>1087495
Есть ты объявил функцию (называется сигнатура) как
void vivod(int a[], int b);
То и её определение должно быть точно таким же:
void vivod(int a[], int b) {
a+b
}
(Названия a и b могут не совпадать, но это потом уже узнаешь.)

У тебя же объявлены функции
void vivod1(int a[], int b);
А определены уже
void vivod1(int a[], int b, int c, int d){}

Ни на какие void'ы ничего менять не надо, откуда ты это вообще взял. Тебе нужно поменять объявление функций, чтобы оно имело ту же сигнатуру, что и определение. Об этом >>1087491 и >>1087504 говорят.

Ну и main должен int возвращать, компилятор прямым текстом об этом сообщает.

5 ноя, 18:46 #101 #1087589

>>1087413
>Когда ты говоришь "тип" ты подразумеваешь всё, кроме звёздочки и амперсандов.
Потому что ты так скозал?

Ответы87644

5 ноя, 21:03 #102 #1087644

>>1087450
> Так вот, у меня вопрос, есть ли смысл вкатываться сразу в кресты?
SICP потом С потом кресты.
>>1087589
См. simple-declaration в
http://eel.is/c++draft/gram.dcl
Ссылка - это квалификатор.
http://eel.is/c++draft/dcl.ptr#1
Указатель - часть типа.
>>1087453
MCVE в студию.
>>1087484
Сообщение сам прочитать можешь хоть?
>>1087492
https://www.google.ru/search?q=vs2017+precompiled+header

Ответы8766087700

5 ноя, 21:39 #103 #1087660

>>1087644
>MCVE в студию.
Забавно, я наоборот хотел вдаваться в детали, что бы анончики, если у кого вдруг случалось, вспомнили из своего опыта схожую ситуацию. Ну а так вот что у меня получилось.
https://pastebin.com/eaZa2VEf
Нужен шаблон, которые бы свернул, как минимум два последних в один, а как максимум еще и первый, и что бы еще принимал результат std::bind.

У меня дальше по коду эти шаблоны сварачиваются в один при помощи

template<typename... Args>
bool RegisterFunction(std::string Funcname, OBJTYPE ReturnType, Args... Functhigns)
{
auto& Fnc = FomralizeFunction(Functhigns...);
//return something.
}

Но std::bind так и не поддерживается, да и в целом это не очень красиво.

Ответы8766587729

5 ноя, 21:48 #104 #1087665

>>1087660
>хотел не вдаваться в детали

131 Кб, 1280x853

sage 5 ноя, 22:05 #105 #1087675

Можно ли объявить std::vector<int> и const, и static одновременно?

Допустим, у меня есть
https://wandbox.org/permlink/jvR26xEti4e1dyw4

Хочу вынести в отдельную структуру переменные, а потом их использовать. Внутри класса использовал static, чтобы не было привязки к экземпляру, но методом можно было пользоваться внутри его. Короче, есть куча методов в классе, void B(), std::vector<short> C, ... Z(), и мне в каждом нужно объявлять пустой, или непустой вектор. Как сделать всё максимально удобно, или забить хуй и тупо в лоб инициализировать? Эта вся хуйня не компилируется, понятно, почему. потому что я долбоёб

Ответы8767687680

5 ноя, 22:06 #106 #1087676

>>1087675
Простите, сажа слу363о прилипла.

5 ноя, 22:09 #107 #1087680

>>1087675
Так, бля. Такая затея лучше?
https://wandbox.org/permlink/HnsTyQfJAlaAS7TS

Ответы87719

5 ноя, 22:40 #108 #1087700

>>1087644
>См. simple-declaration в
>http://eel.is/c++draft/gram.dcl
Посмотрел. И?
>Ссылка - это квалификатор.
Это ты увидел слово ref-qualifier и сделал такой вывод?
>http://eel.is/c++draft/dcl.ptr#1
>Указатель - часть типа.
Часть какого типа?

Ответы87729

5 ноя, 23:04 #109 #1087719

>>1087680
Ты же в итоге все равно этот вектор копируешь, не так ли? Заччем тогда его вообще выносить? Или тебе просто лень каждый раз писать?
В общем если это так и ты просто хотел сделать приватные статические константные вектора, то вот они.

Ответы87732

5 ноя, 23:06 #110 #1087723

>>1087450
>Друзья, появилось желание конкретно вкатиться в Айти. Заинтересовался геймдевом и созданием приложений под десктоп. Выбор пал на C++
Зря. Иди качай Unity/UnrealEngine, изучай его и по мере необходимости изучай плюсы/шарп. Полноценное изучение плюсов тебя к цели не приведет

5 ноя, 23:11 #111 #1087729

>>1087660
И всё равно я, блядь, не понял, в каком месте твоих шаблонов будет больше трёх.
> как минимум два последних в один,
1) Вторая перегрузка лишняя, ведь функция конвертится в std::function неявно, и результат bind такая перегрузка должна принимать по той же причине.
2) Первая перегрузка выражается через третью с помощью bind.
>но проблема в том, что для каждого из этих случаев мне приходится писать новый вариант шаблона
Нихуя не понял. У тебя всего три перегрузки, это много? Что значит "писать новый вариант"? Чем эта надобность вызвана? Код ни о чём не говорит.
>>1087700
http://eel.is/c++draft/dcl.init.ref#1
Окладно, забей.
>>1087222
>В первом выделенном жирным участке вроде как должно быть "тип rhs является rvalue ссылкой"? Или так и должно быть?
Тип определяет все видимые во время компиляции свойства объекта, так что "X имеет тип Y" и "X является Y" полностью взаимозаменяемо.

Ответы8773587737

5 ноя, 23:14 #112 #1087732

>>1087719
Да, лень писать. Спасибо.

Ответы87738

5 ноя, 23:25 #113 #1087735

>>1087729
>Вторая перегрузка лишняя, ведь функция конвертится в std::function неявно, и результат bind такая перегрузка должна принимать по той же причине.
При инстанцировании шаблона, тип создается именно такой, какой был передан. Иными словами если у тебя есть
template<typename T>
void Fnc(T param);
template<>void Fnc(std::string str){printf("%s", str.c_str());}

Напишешь Fnc(std::string("Val")); Будет выведено Val; Напишешь Fnc("Val"); Компилятор скажет, что не может найти вариант шаблона под const char*
В случае с шаблонами ничего ни во что не переводится.

Ответы88097

5 ноя, 23:25 #114 #1087737

>>1087729
>http://eel.is/c++draft/dcl.init.ref#1
Ссылки надо инициализировать — вот это новость!
> Окладно, забей.
Чому?

Ответы88097

5 ноя, 23:27 #115 #1087738

>>1087732
У борды проблемы с pastebin или это я такой тупой и забыл дать ссылку?
https://pastebin.com/w7CYfE2c

6 ноя, 01:38 #116 #1087767

https://wandbox.org/permlink/Unybdy7Juz7930yq
Что делает данный код?

Ответы8777087773

6 ноя, 01:59 #117 #1087770

>>1087767
Содержит UB.

6 ноя, 02:09 #118 #1087773

>>1087767
Переводит комп в режим отопления помещения?
Отрубить бы автору руки за такой говнокод. auto и decltype в каждую щель, просто пиздец. А это создание потоков, на один меньше чем надо. А использование volatile, типа thread safe переменная...

6 ноя, 14:15 #119 #1087874

Есть такой код - https://repl.it/NoCE
Компилятор почему-то ругается (warning'ами), что, мол, "missing initializer for member 'Obj::b'" и "missing initializer for member 'Obj::c'". Чинится заменой на { {0, 0, 0} }, конечно, но так ли я неправ с инициализацией одни нуликом? Да и при смене формата структуры (во время разработки) придётся эту хрень туда-сюда менять.

Ответы87893

6 ноя, 14:32 #120 #1087877

Как пере-запилить уже гоовую программу на ведройд?

6 ноя, 15:00 #121 #1087893

>>1087874
https://wandbox.org/permlink/CRAL4r1l1qWGDsJx

Ответы88140

7 ноя, 01:05 #122 #1088097

>>1087735
Тогда сорян, у меня просто практики мало. В таком случае могу посоветовать только if constexpr, который более читаемый, чем СФИНАЕ-лапша.
>>1087737
В стандарте прямо так и написано:
>A variable whose declared type is “reference to type T”
Т.е. ссылка - часть типа, поэтому моё изначальное утверждение не имеет вообще никакого смысла, я был неправ.
>>1087755
Потому что я учусь, помогая, а дауну моя пощомь не поможет вытеснить меня с рынка.

Ответы88180

7 ноя, 05:46 #123 #1088140

>>1087893
Хм, и правда, ++11 же. Спасибо.

7 ноя, 10:33 #124 #1088180

>>1088097
>Т.е. ссылка - часть типа
Я вообще не понял, зачем было лезть в declaration/declarator.

Есть же очевидный http://eel.is/c++draft/basic.types, где в первом параграфе http://eel.is/c++draft/basic.types#1.note-1 кратко сообщается, что типы делятся на 2 класса: fundamental и compound. Ну и указатели со ссылками это виды compound-типов http://eel.is/c++draft/basic.types#basic.compound-1.3 http://eel.is/c++draft/basic.types#basic.compound-1.4

А то, что в declaration звёздочка с амперсандом входят в т.н. declarator... Ну и что?

7 ноя, 13:03 #125 #1088235

>>1087363
Будет еще один нахуй никому не нужный и не интересный доклад.
На прошлом-то цппараша '17 только парочку достойных было. А так я только пожалел, что потратил кучу времени на многообещающие названия, которые обернулись хуитой

7 ноя, 14:20 #126 #1088264

2 Кб, 379x79

2 Кб, 420x99

Может кто объяснить различие в этих двух суммах?

Ответы8827688310

7 ноя, 14:44 #127 #1088276

>>1088264
Вынесение общего множителя за скобки вроде в 5 классе проходят.

Ответы88283

7 ноя, 15:06 #128 #1088283

>>1088276
Ты молодец, но суть в том, что я не понимаю, что такое сумма сумм, а инфы в нете кот наплакал, нашел ед. книгу где это объясняется и та без примеров.

Ответы8829788315

7 ноя, 15:49 #129 #1088297

>>1088283
>сумма сумм
(1+2+3+4)+(1+2+3+4)+(1+2+3+4)+(1+2+3+4)

Ответы88334

7 ноя, 16:15 #130 #1088310

>>1088264
А разница есть?

7 ноя, 16:27 #131 #1088315

>>1088283
Тебя скорее всего смущает наличие двух знаков суммы. Берешь и подставляешь вместо n и m целые числа, пусть будет 3 и 3.
Суммируем по l.
Получается сумма по k_от_1_до_3 от выражения( k^3(k-1) +k^3(k-2) +k^3(k-3))

Теперь суммируешь по k, каждый элемент 3 раза. 3*3 дает девять слагаемых без параметров.

Иногда сумма факторизуется, т.е. ты можешь отделить компоненты одного ряда от от другого.
Здесь так сделать нельзя.

Ответы88317

7 ноя, 16:30 #132 #1088317

>>1088315
>Теперь суммируешь по k, каждый элемент 3 раза
Оговорился, имелось в виду, что что суммируешь по k каждый компонент ряда.

самофикс

Ответы88334

7 ноя, 16:59 #133 #1088334

>>1088317
>>1088297

Спасибо вам ребята.

7 ноя, 17:41 #134 #1088351

Так, сап плюсовые.
Есть пара вопросов касательно MAP
Есть один map<string, int>
1) Как мне в с'ауте вывести только второй ключ
2) Как мне обратиться только ко значению или к ключу
3) Как изменить только значение

Ответы88395

7 ноя, 18:57 #135 #1088395

>>1088351

http://www.cplusplus.com/reference/map/map/begin/

ты как будто вчера только плюсы включил

8 ноя, 15:21 #136 #1088792

>>1085579 (OP)
Где взять исходники aptitude? Хочу понять как делат ьтакое же консольное меню.

Ответы88863

8 ноя, 16:10 #137 #1088811

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

Ответы88843888539306193087

8 ноя, 18:27 #138 #1088843

>>1088811
Среди активных стримов перископа автоматически находить те, где красивые девушки пытаются эротишно танцевать.

8 ноя, 18:53 #139 #1088853

>>1088811

я в универе когда учился написал типа загрузчик уровней quake3 из bsp файлов, библиотекой directx

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

8 ноя, 18:53 #140 #1088854

Вопрос не в том разделе, но все же спрошу.

Поясните, почему где-то требуются разработчики именно на чистом С, если есть С++, который полностью включает в себя С.

В чем принципиальное преимущество обычного С над плюсами?

Ответы88856888578885988860888628921693067

8 ноя, 18:56 #141 #1088856

>>1088854
>преимущество обычного С над плюсами?

не нужно тянут с собой Visual Studio C++ Redistributable 2012 x86-64

8 ноя, 18:57 #142 #1088857

>>1088854

В том что Си простой, маленький и быстрый язык, а чтоб писать на С++ надо быть терминатором-задротом с 5 летним стажем который выучил дохуя подводных камней языка и правильно умеет ими пользоваться. Это тебе не игрушки.

Сам пишу на Си, выучил после него C# на приемлимом уровне за 6-8 месяцев, но вот C++ нихуя не шарю ибо язык очень большой и сложный да и нахуй мне не нужен. Захочу что то системное, напишу на чистом Си, а ежели веб или десктоп то на шарпе.

8 ноя, 19:01 #143 #1088859

>>1088854
У C++ жирный рантайм. Для обработки исключений.

Ответы8921489221

8 ноя, 19:01 #144 #1088860

>>1088854
>который полностью включает в себя С.

Это утверждение не верное. Есть вещи из Си которые нельзя делать в С++. К примеру Си не очень типизированный язык, а С++ в этом плане строгий.

8 ноя, 19:02 #145 #1088862

>>1088854
Банально может не быть компиляторов для C++ под платформу в ембеддеде. Да и компилятора C может не быть, а может быть что-то подобное C, но в каких-то деталях отличающееся от стандарта.

Ответы89021

8 ноя, 19:03 #146 #1088863

>>1088792
aptitude использует ncurses

sage 9 ноя, 00:07 #147 #1089021

>>1088862
Ты всегда можешь скомпилировать с++ в с.

Ответы89214

9 ноя, 14:00 #148 #1089214

>>1089021
>>1088859

Да ещё требует поддержки со стороны компилятора. Ну или придётся в setjmp/longjmp транслировать.

9 ноя, 14:02 #149 #1089216

>>1088854
Разница в том, что С++ говно, а С няшка. И нормальные образованные разработчики это понимают.

Ответы89426

9 ноя, 14:10 #150 #1089221

>>1088859
-fno-exceptions and -fno-rtti

Ответы89364

9 ноя, 16:46 #151 #1089364

>>1089221
Сразу
-x c
тогда, что мелочиться?

9 ноя, 17:48 #152 #1089426

>>1089216
>С++ говно, а С няшка
Почему?

9 ноя, 19:06 #153 #1089475

Ребята, нужна помощь. Нужно в массиве найти минимальный эл-т, и обнулить стоящие справа от него эл-ты.
int main()
{
int N;
cin >> N;
int A[100];
for (int i = 0; i < N; i++)
{
cin >> A;
}
int Min = A[0];
for (int i = 0; i < N; i++)
{
if (Min > A)
Min = A;
}
cout << "Min = " << Min << endl;
//for (int i = 0; i < N; i++)
//{
//A = 0;
//}
for (int i = 0; i < N; i++)
{
cout << "A[" << i << "] = " << A << endl;
}
system("pause");
return 0;
}
Минимальный эл-т нашел, не могу обнулить, где в комментариях он обнуляет не с минимального эл-та, а с элемента с минимальным значением. В общем, помогите сделать, если возможно, то без задания массива через функцию и без указателей.

9 ноя, 19:06 #153 #1089475

Ребята, нужна помощь. Нужно в массиве найти минимальный эл-т, и обнулить стоящие справа от него эл-ты.
int main()
{
int N;
cin >> N;
int A[100];
for (int i = 0; i < N; i++)
{
cin >> A;
}
int Min = A[0];
for (int i = 0; i < N; i++)
{
if (Min > A)
Min = A;
}
cout << "Min = " << Min << endl;
//for (int i = 0; i < N; i++)
//{
//A = 0;
//}
for (int i = 0; i < N; i++)
{
cout << "A[" << i << "] = " << A << endl;
}
system("pause");
return 0;
}
Минимальный эл-т нашел, не могу обнулить, где в комментариях он обнуляет не с минимального эл-та, а с элемента с минимальным значением. В общем, помогите сделать, если возможно, то без задания массива через функцию и без указателей.

Показать весь текст
Ответы8947989727

9 ноя, 19:10 #154 #1089479

>>1089475
>где в комментариях он обнуляет не с минимального эл-та, а с элемента с минимальным значением
Чуть не так сказал. Коро че, если Min - минимальный, то обнуляет не с эл-т с мин. значением, а с A[Min]

Ответы89507

9 ноя, 19:51 #155 #1089507

>>1089479
Скинул в личку.

Ответы89511

9 ноя, 19:55 #156 #1089511

>>1089507
Спасибо Ванга, я думал ты коней двинула.

10 ноя, 05:59 #157 #1089727

>>1089475
Ты когда элемент ищешь, записывай ещё и индекс его. А затем в лупе пройдись начиная с i=min_idx. Пиздец ты описываешь свои проблемы, конечно.

10 ноя, 23:31 #158 #1090103

19 Кб, 470x54

43 Кб, 501x93

Сап ананасы, не могу, сука, допереть, как делается эта херня. Переписывал уже раз пять, везде что-то да не работает. Нашел в этих ваших какой-то код, но он тоже работает как криворукий https://ideone.com/xRMgC2
С меня как всегда

Ответы9010690112

10 ноя, 23:41 #159 #1090106

>>1090103
К этому же сабжу. Чел скинул такое https://ideone.com/gdE2oR , но работает оно вообще никак

11 ноя, 00:16 #160 #1090112

>>1090103
>С меня как всегда
С нас тоже.

Ответы90114

11 ноя, 00:16 #161 #1090114

>>1090112
>С нас тоже.
Или так: с нас то же.

И так, и так корректно будет.

9 Кб, 466x218

11 ноя, 20:51 #162 #1090440

У меня достаточно здоровый проект, напилено куча говна. Обнаружил, что в основном окне при вызове
try {
throw 1;
} catch ( ... ) {
}

происходит креш, причем в новом проекте с тем же сетапом(qt, mingw, boost) все гладко работает, с чем это может быть связано?

Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Error -
RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly

Ответы9056690690

22 Кб, 352x364

11 ноя, 22:19 #163 #1090510

как сделать вот это говно автоматом?

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

макросами как-то можно получить имя класса? может дружбу по другому можно организовать?

Ответы905589071897498

11 ноя, 23:53 #164 #1090558

>>1090510
А не пиши геттеры и сеттеры. Это по сути плохо.
Если у тебя есть класс

Class A {
int A1;
int A2;
public:
void setA1(int val);
void setA2(int val);
int getA1();
int getA2();
};

То это по сути просто
Class A {
public:
int A1;
int A2;
};

Какая разница-то?)
Думай как делать класс в проекте так, чтобы не драть из него значения, а чтобы объект ими сам распоряжался.

Чтоб не

unit.setHealth(unit.getHealth() - damage);

А unit.takeDamage(damage);

Хотя, иногда геттеры всё же нужны. Но их не должно быть так много чтобы ты ЗАЕБАЛСЯ ИХ ПИСАТЬ.

11 ноя, 23:53 #164 #1090558

>>1090510
А не пиши геттеры и сеттеры. Это по сути плохо.
Если у тебя есть класс

Class A {
int A1;
int A2;
public:
void setA1(int val);
void setA2(int val);
int getA1();
int getA2();
};

То это по сути просто
Class A {
public:
int A1;
int A2;
};

Какая разница-то?)
Думай как делать класс в проекте так, чтобы не драть из него значения, а чтобы объект ими сам распоряжался.

Чтоб не

unit.setHealth(unit.getHealth() - damage);

А unit.takeDamage(damage);

Хотя, иногда геттеры всё же нужны. Но их не должно быть так много чтобы ты ЗАЕБАЛСЯ ИХ ПИСАТЬ.

Показать весь текст
Ответы90571

12 ноя, 00:01 #165 #1090566

>>1090440
А ты в студии делаешь или в креаторе? Просто интересно

Ответы90690

25 Кб, 141x189

12 ноя, 00:06 #166 #1090571

>>1090558
>ПРОСТО используй костыли
спасибо капитан очевидностьпердоликооправдания.
>Думай как делать класс в проекте так, чтобы не драть из него значения
у тебя есть класс, который ты суёшь в вектор. значения в него записываются единожды, но потом их иногда нужно посмотреть. твои действия, пердолик?
-напишешь геттеры
-нипишешь один геттер-тупль и получишь струю мочи в лицо
-сделаешь вместо одного класса десять разных на 150000 строк кода
-просто ёбнешь туда публик
конст не пойдёт, т.к. он убивает копи ассайнмент, а без него в векторе не эрейзнешь.
>геттеры
пердолик сам придумывае хуйню и сам себе объясняет

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

Ответы9069090718

12 ноя, 09:38 #167 #1090690

>>1090566
Qt и MinGW в студии - это пиздец. Ясен хуй, он не в стуидии это делает. VCRT - это жирная диэлэлка, с которой некоторые проги линкуются, к студии отношения не имеет.
>>1090440
Поподробнее бы. Загрузил бы символы для винды и посмотреб бы хотя бы на стек вызовов.
>>1090571
>конст не пойдёт, т.к. он убивает копи ассайнмент
Изъебнуться можно!
http://coliru.stacked-crooked.com/a/04bde07502bf1c89
http://coliru.stacked-crooked.com/a/5a81a73b77be4d56
И по-моему это даже не UB.
Проблема с констом очевидна, почему до сих пор не решили - не знаю.

Ответы9069291043

12 ноя, 09:39 #168 #1090692

>>1090690
>http://coliru.stacked-crooked.com/a/5a81a73b77be4d56
В 12 строке вызов деструктора, но это я так, выебнулся, а нужно ли его вызывать - зависит от того, что ты там написал.

Ответы9078990794

12 ноя, 11:39 #169 #1090718

>>1090510
>>1090571
А в чем вообще смысл написания кучи геттеров и сеттеров без какой-либо внутренней логики? Чем это лучше наличия публичной переменной? Просто некрасиво или есть какие-то объективные причины?

Ответы90735907609078790789

12 ноя, 12:27 #170 #1090734

Насколько актуальна книга Лафоре по плюсам за 2004 год? После некоторого времени ее чтения заглянул сюда и с удивлением обнаружил, что язык регулярно обновляется, а мой учебник помечен как частично устаревший.

Ответы90784

12 ноя, 12:38 #171 #1090735

>>1090718
>без какой-либо внутренней логики
>есть какие-то объективные причины?
А вдруг потом логика появится!

12 ноя, 14:05 #172 #1090760

>>1090718
>А в чем вообще смысл написания кучи геттеров и сеттеров без какой-либо внутренней логики?
Ни в чём. Просто ООП головного мозга.

12 ноя, 15:12 #173 #1090784

>>1090734
почти неактуальна, бери что-нибудь с раскрытием
темы c++ 2017

Ответы92012

12 ноя, 15:13 #174 #1090787

>>1090718
экономия на рефракторинге когда логика появится. в норм языках есть computed properties,
в с++ не завезли

Ответы9080790809

178 Кб, 800x508

12 ноя, 15:18 #175 #1090789

>>1090692
вообще это уби, насколько я помню
>>1090718
пердоличек, не придумывай сеттеры, сеттеры твои никому нахуй не нужны сейчас. я привёл ситуацию, когда нужно ограничение доступа для ясности, и вот тут или вылезают геттеры, или просто забивается хуй на контроль.

Ответы907939089890930

12 ноя, 15:37 #176 #1090793

>>1090789
>вообще это уби, насколько я помню
Не UB, это просто не exception safe.

12 ноя, 15:47 #177 #1090794

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

Можно создать поверх данного объекта другой, либо вызвав сперва деструктор старого объекта, либо не вызывая его, но тогда деструктор не должен вызываться неявно. А он вызывается неявно в конце main.

Ответы90898

12 ноя, 16:19 #178 #1090807

>>1090787
Что-нить типа такого спасет отца русской демократии?
https://github.com/tower120/reactive

Ответы91114

12 ноя, 16:24 #179 #1090809

>>1090787
Или даже так
https://gist.github.com/Arkanosis/632294

Ответы90811

12 ноя, 16:35 #180 #1090811

>>1090809
Сейчас начнётся "ко-ко-ко, макросы"

Ответы90814

12 ноя, 16:43 #181 #1090814

>>1090811
Сам уже заметил.

12 ноя, 17:39 #182 #1090823

Двощ, есть ли какие нибудь приложения, преобразующие .exe файл в код? Естественно, если приложение без защиты

Ответы9083790839

12 ноя, 18:13 #183 #1090837

>>1090823
Конечно, это называется декомпилятор. Нет, никакого осмысленного человекочитаемого кода так не получить.

12 ноя, 18:15 #184 #1090839

>>1090823
Вот беглый пример того, как это выглядит:
https://derevenets.com/examples.html
Сам понимаешь, что там будет, если еще шаблоны навернуть хотя бы.

12 ноя, 20:40 #185 #1090898

>>1090789
>вообще это уби, насколько я помню
Поподробнее бы.
>>1090794
Это стандарт так говорит?

Ответы9091190924

12 ноя, 21:07 #186 #1090911

>>1090898
If, after the lifetime of an object has ended and before the storage which the object occupied is reused or released, a new object is created at the storage location which the original object occupied, a pointer that pointed to the original object, a reference that referred to the original object, or the name of the original object will automatically refer to the new object and, once the lifetime of the new object has started, can be used to manipulate the new object, if:

the type of the original object is not const-qualiﬁed, and, if a class type, does not contain any non-static data member whose type is const-qualiﬁed or a reference type

вектор сломает, по-моему.

Ответы9092490967

12 ноя, 21:22 #187 #1090918

Что можно написать ньюфагу на крестах?

Ответы91106

12 ноя, 21:28 #188 #1090924

>>1090898
>Это стандарт так говорит?
Да. http://eel.is/c++draft/basic.life#5
>>1090911
Ты не совсем то скинул.

Ответы90967

12 ноя, 21:42 #189 #1090930

>>1090789
>ограничение доступа
>для ясности
Что-то проиграл с этого архитектора. Ты членораздельно и без истерик и можешь объяснить что тебе было нужно и зачем ты это сделал?

Ответы90931

12 ноя, 21:44 #190 #1090931

>>1090930
>и без истерик и можешь
>и можешь
у тебя просто деменция. всем всё ясно кроме тебя.

Ответы90949

12 ноя, 22:05 #191 #1090949

>>1090931
На вопрос ответь.

12 ноя, 22:57 #192 #1090967

>>1090911
Вектор тут вообще ни при чём. Очень правильно подметил, кстати: видимо, изменение конст-членов чревато, см. ниже.
>>1090924
Он как раз то самое и скинул, прочти внимательно: ссылкой на объект можно пользоваться снова, если у объекта нет ссылок и констов.
Нет слова "только" перед "если", но зато есть явное указание на необходимость использования launder в сноске:
http://eel.is/c++draft/basic.life#8.4
а про name не сказано вообще ничего.
http://eel.is/c++draft/support.dynamic#ptr.launder-5

Про то, на что сослался ты: https://stackoverflow.com/questions/41385355/is-it-ok-not-to-call-the-destructor-on-placement-new-allocated-objects/41385381 То есть, формулировка размыта. Кроме того, у тривиального деструктора нет сторонних эффектов.

Ответы91181

12 ноя, 22:59 #193 #1090969

При чём в 8.4 в примере тот самый велосипед, который я переизобрёл.

13 ноя, 00:53 #194 #1091020

Итак щеглы, которые прожат в визул студио, как оно вам живется с этим??? Наверно теперь понимаете как ловят тру хачкеров
https://www.reddit.com/r/cpp/comments/4ibauu/visual_studio_adding_telemetry_function_calls_to/

Ответы9103791038

13 ноя, 01:39 #195 #1091037

>>1091020

так давно уже конпулятор микрософт добавлял идентификатор процессора в бинарники

13 ноя, 01:44 #196 #1091038

>>1091020
как вообще можно использовать спермостудию когда есть кмейк и кутекуриэйтор? она ж кусок говна.

Ответы9105391060

9 Кб, 437x126

13 ноя, 01:59 #197 #1091043

Как настроить таймаут дисконнекта синхронного коннекта буст сокета?
Везде пишут, что не предусмотрено, или что синхронный таймаут не канон.
Я тестирую таймаут бесконечным циклом ( connect -> send http -> receive http -> disconnect ) с помощью выдергивания шнура, где-то 20-25 секунд все висит, после кидает boost::system::eror_code. Навязывается вывод, что он где-то же все-таки есть.
http://pubs.opengroup.org/onlinepubs/009695399/functions/setsockopt.html
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740476(v=vs.85).aspx
Ничего не нашел, может плохо искал.

В документации есть пример с асинхронным, но он кривой, и вообще, по сути, без запуска io_service в самом коде, что есть пиздец и без создания внешнего класса такое не провернешь
http://www.boost.org/doc/libs/1_52_0/doc/html/boost_asio/example/timeouts/blocking_tcp_client.cpp

>>1090690
Как это сделать? Я в человеческий дебаг не могу. Пикрл - все, на что способен. Думаю, придется комментить до победного конца, но все же может получится нормально сделать.

Ответы91073

13 ноя, 02:42 #198 #1091053

>>1091038
Как вообще можно использовать эту красноглазую залупу, когда есть MSVC?

13 ноя, 04:06 #199 #1091060

>>1091038
У тебя опечатки в слове CLion.

Ответы91112

34 Кб, 903x349

13 ноя, 04:40 #200 #1091073

>>1091043

Ответы91096

13 ноя, 07:54 #201 #1091096

>>1091073
Хуита хует. Очевидно, падать на этом оно не должно. На всякий случай: а оно точно пересобирается? Посмотри в лог компиляции. Для чистоты эксперимента закомменти ещё и QApplication.

Олсо, это точно твоя программа падает, а не qmake или компилятор?

13 ноя, 09:01 #202 #1091106

>>1090918
Конпелятор

13 ноя, 09:25 #203 #1091112

>>1091060
>CLion
>>вырвиглазная тормозящая залупа на jvm
no, thanks

proud Visual Studio Code user

Ответы9121291213

13 ноя, 09:31 #204 #1091114

>>1090807
какое же уродство, ппц просто

Ответы91218

90 Кб, 1547x625

13 ноя, 12:23 #205 #1091155

Нашел источник проблемы. С чем это может быть связано?

new project -> qt _bs_ ->
QMAKE_LFLAGS += -static-libgcc
QMAKE_LFLAGS += -static
-> pic

Ответы9128391284

13 ноя, 13:31 #206 #1091181

>>1090967
Ок, про ссылки верно.

13 ноя, 14:16 #207 #1091212

>>1091112
Я тоже им пользуюсь, но это же не IDE.

13 ноя, 14:16 #208 #1091213

>>1091112
Вместо этого ты пользуешься вырвиглазной тормозящей залупой на электроне, найс.

13 ноя, 14:23 #209 #1091218

>>1091114
Необязательно передавать лямбды, если не нравится. Будет выглядеть примерно так
https://github.com/schlangster/cpp.react

13 ноя, 16:52 #210 #1091283

>>1091155
Хуй знает даже. Пиши багрепорт. Я правильно тебя понял, линкуешь статически и получаешь ошибку?

Ответы91305

13 ноя, 16:53 #211 #1091284

>>1091155
Причём багрепорт пиши разрабам MinGW-w64, наверное.

13 ноя, 17:35 #212 #1091305

>>1091283
Да, но сборка Qt не статическая.
Также ломается на хуевом ноуте, не очень могу в багрепорты, научишь?

Ответы91307

13 ноя, 17:40 #213 #1091307

>>1091305
>но сборка Qt не статическая.
лол

Ответы91315

13 ноя, 18:03 #214 #1091315

>>1091307
Ну пиздец, либы std линкуются статически, либы Qt - динамически, типо не канает?

Ответы91317

13 ноя, 18:07 #215 #1091317

>>1091315
нетъ

Ответы91319

13 ноя, 18:12 #216 #1091319

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

Ответы91321

13 ноя, 18:16 #217 #1091321

>>1091319
при динамической сборке твой проджект работает?

Ответы91323

13 ноя, 18:18 #218 #1091323

>>1091321
Да, и не токлько в моей прогу, в любой проге. Только добавляю те флаги, трай-кетч крешит.

Ответы91326

13 ноя, 18:28 #219 #1091326

>>1091323
и че ты тут нам мозг тогда ебешь? статический кут проект конпилится только со статическим кут.

Ответы92087

13 ноя, 20:43 #220 #1091419

>>1085579 (OP)
Анон, ньюфаг-неосилятор итт. Есть код:
class Type
{
...
Type foo(...)
{
type ans(...); ... return ans;
}
...
}

Что вообще возвращает foo()? ans был локальной переменной, в какой момент запуститься её деструктор? если, скажем, в main будет будет что-то типа type x = y.foo(...) (operator= определили, например поля простые int'ы и тупо все копируется, к утечкам не приводит) - это вообще на низком уровне что такое?
И что такое конструирование объекта во время return, типа foo() { return Type(...) } и чем бы это отличалось от foo() { type a() return a } ?
Не ссытите на лицо плз, несколько часов эксперементирую и не понимаю что происходит.

Ответы9142691457

13 ноя, 21:02 #221 #1091426

>>1091419
Возвращается копия, но компилятор оптимизирует и копирование постарается убрать. Ты же не указатель/ссылку возвращаешь.

Ответы9143991450

13 ноя, 21:25 #222 #1091439

>>1091426
>Возвращается копия
Копия делается по ans конструктором копирования? Но у меня он не срабатывает почему-то судя по отладочному выводу, который я в него добавил. Главный вопрос в том, сколько тогда эта копия живет? В type x = y.foo(...) эта копия должна раньше присваивания похерится или как?

В моих тестах сначала проходило присваивание, потом вызывался деструктор, однако если усложнить выражение, т.е. начать к y.foo() применять, например, какие-нибудь операторы и потом уже делать присваивание, то самописный деструктор показывал мне вызов деструктора ans (именно ans, его адрес выводил, а не копии какой-то return'овской) раньше присваивания, и я ничего не понимать. UB что ли?

Ответы91647

13 ноя, 21:50 #223 #1091450

>>1091426
>копирование постарается убрать
да, очком читал, понятно тогда почему у меня не срабатывал конструктор копирования. Тогда что вообще возвращается, если и не копия?

Ответы91478

13 ноя, 22:01 #224 #1091457

>>1091419
>в какой момент запуститься её деструктор
http://eel.is/c++draft/stmt.return#3

>несколько часов эксперементирую
>В моих тестах
> Не ссытите на лицо плз

Ты серьёзно просишь не ссать на лицо, когда вместо лазанья в стандарт запускаешь какие-то тесты?

Ответы91490

13 ноя, 22:38 #225 #1091478

>>1091450
> Тогда что вообще возвращается, если и не копия?
ничего не возвращается. эта оптимизация называется copy elision
суть:

T f()
{
T in_f{};
return in_f{};
}

int main()
{
T out_f = f();
}

если оптимизация сработает, то внутри функции f() переменная in_f никогда не создастся, компилятор сразу создаст out_f и будет внутри фунции работать с ней, как будто она in_f.
однако, эта оптимизация гарантированна лишь начиная начиная с c++17, который ты вряд ли пользуешь, и при определённых условиях. то бишь, компилятор может эту оптимизацию и не применить на режимах до --std=c++17

если хочешь нормально раздебажится, то запрети компилятору делать оптимизации вообще через -O0 флаг на шланге/гцц, в вижуалке где-то в менюшках оно спрятано

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

да, не забывай про правило 3 до c++11, начиная с c++11 это правило 5

Ответы9148191490

13 ноя, 22:42 #226 #1091481

>>1091478
>
>если оптимизация сработает, то внутри функции f() переменная in_f никогда не создастся, компилятор сразу создаст out_f и будет внутри фунции работать с ней, как будто она in_f.
>однако, эта оптимизация гарантированна лишь начиная начиная с c++17

Врать-то не надо. Никакой copy elision в C++17 не гарантируется для твоего кода.

Ответы91485

13 ноя, 22:46 #227 #1091485

>>1091481
ты далбик или как? http://open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#2022

Ответы91487

13 ноя, 22:48 #228 #1091487

>>1091485
К чему вообще этот defect report?

Ответы91647

13 ноя, 22:50 #229 #1091490

>>1091457
The standard is not intended to teach how to use C++.
>>1091478
всё, спасибо большое, анон, за нужные теги, нужное мне нагугли

Ответы91493

13 ноя, 22:53 #230 #1091493

>>1091490
Определись, тебе teach или понимать, что когда происходит?

Ответы91499

13 ноя, 22:57 #231 #1091499

>>1091493
я понимаю, что когда ты крутой, то выглядит естественным открыть чистую документация и просто прочесть, и ты вероятно забыл, что начинающей в этой статьей найдет столько непонятных слов, разбираться с которыми right here right now не очень продуктивно.

14 ноя, 09:10 #232 #1091647

>>1091439
>Копия делается по ans конструктором копирования
Что значит предлог "по"?
>Но у меня он не срабатывает почему-то судя по отладочному выводу, который я в него добавил.
>В type x = y.foo(...) эта копия должна раньше присваивания похерится или как?
Copy elision. Стандарт допускает.
>>1091487
Там ссылки на пункты стандарта есть с цитатами, ленивая ты жопа.

Ответы91731

14 ноя, 10:38 #233 #1091697

Нужен c++ программист (cocos2d-x) в мобильный геймдев на удаленку с перспективой релокейта в Вильнюс. Как его найти? Уместно ли запостить вакансию здесь?

Ответы91703

14 ноя, 10:47 #234 #1091703

>>1091697
Пиши bluemaxgame на гмыло.

Ответы91726

14 ноя, 11:21 #235 #1091726

>>1091703
Написал.

14 ноя, 11:45 #236 #1091731

>>1091647
И всё-таки, при чём тут defect report про constexpr?

Ответы92086

14 ноя, 16:19 #237 #1091876

Реквестую книг по погромированию на крестах под шиндус

17 Кб, 812x544

14 ноя, 17:04 #238 #1091889

>>1085579 (OP) Сап, программач.

Я офисоклерк, решивший вкатиться в кресты. За плечами сначала были макросы в AutoHotkey, потом клепал их уже на VBA в Excel для облегчения рутинных задач.

Вопрос вот в чём: хочется иметь у себя компилятор, но на работе у меня нет админских прав. Некоторое время я использовал ideone и repl.it, как рекомендовано в шапке, но ощущения не те. Visual Stodio мне не поставят, инфа сотка. Думал использовать VSCode + Clang, но последний требует студию для работы. Для MinGW нужны админские права.

Есть ли какие-нибудь компиляторы или IDE не требующие права, программач? И если есть, то какие?

Ответы918999190891912919229203992086

14 ноя, 17:19 #239 #1091899

>>1091889
http://copy.sh/v86/

14 ноя, 17:35 #240 #1091908

>>1091889
>Я офисоклерк, решивший вкатиться в кресты
Расскажи, как работает std::move и std::forward и как работает паттерн Visitor.

14 ноя, 17:36 #241 #1091912

>>1091889
Инсталлёр cygwin вроде как с --no-admin можно запускать.

14 ноя, 17:47 #242 #1091922

>>1091889
> Clang, но последний требует студию для работы.
Уверен?

14 ноя, 19:51 #243 #1091997

Анончики, в std::map при дефолтной инициализации значения по ключу мне гарантируют инициализацию void* нулём, или undefined behaviour, так как если бы я создавал переменную на стеке? (MSVC 11)

Ответы92074

14 ноя, 20:09 #244 #1092012

>>1090784
а переиздания лафоре 2014?

14 ноя, 20:44 #245 #1092039

>>1091889
https://nuwen.net/mingw.html#install

55 Кб, 771x278

14 ноя, 21:45 #246 #1092074

>>1091997
> Анончики
Хуёнчики.

> std::map при дефолтной инициализации значения по ключу мне гарантируют инициализацию void* нулём

std::map::[] при вставке делает value initialization. http://en.cppreference.com/w/cpp/language/value_initialization

> undefined behaviour, так как если бы я создавал переменную на стеке?
Создавать переменные на стеке — не undefined behavior

Ответы92079

14 ноя, 21:55 #247 #1092079

>>1092074
Спасибо.
Т.е.
int i;
мне гарантирует 0? Я думал, любая хуита может быть. Хотя на плюсах не писал почти никогда.

Ответы9208092086

14 ноя, 21:56 #248 #1092080

>>1092079
>int i;
>мне гарантирует 0?
Нет.

Ответы92084

14 ноя, 21:57 #249 #1092084

>>1092080
> Создавать переменные на стеке — не undefined behavior

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

Ответы92085

14 ноя, 21:58 #250 #1092085

>>1092084
UB при чтении неинициализированной.

14 ноя, 21:59 #251 #1092086

>>1091731
Он просто первым в гугле его увидел, и по упомянутым причинам он тоже подходит, как источник информации.
>>1091889
>Есть ли какие-нибудь компиляторы или IDE не требующие права, программач?
Почти никаким программам не нужны админские права, и большинство программ будут работать после копирования файлов и ключей реестра.
Для Qt Creator, например, нужно только две папки: папка с программой (можно скопировать в ЛЮБОЕ место) и папка из AppData/Roaming (скопировать в похожую папку на целевой машине). Запусти установщик дома. Ну и компилятор (MinGW W64).
С другой стороны, кутэкреатор посоветовать не могу, там ебалайка с библиотеками, надо в PATH папку bin из мингв добавить. В винде без админских прав это делается из окошка "Учётные записи".
https://www1.qt.io/download-open-source/
https://sourceforge.net/projects/mingw-w64/files/?source=navbar
> Для MinGW нужны админские права.
штоблядь
Зип качни и распакуй, где там права нужны?
>>1092079
Речь о мапе идёт, блядь.
>>>std::map::[] при вставке делает value initialization
>>>std::map::[] при вставке делает value initialization
>>>std::map::[] при вставке делает value initialization

Ответы92090

14 ноя, 22:00 #252 #1092087

>>1091326
А вот у меня вопрос, какого хуя он не пожаловался об этом сам? И кто виноват, если у ОПа крашился try-catch вообще без кода Qt? Хотя он так и не закомментил куаппликатион, так что мы уже не узнаем, кто виноват.

14 ноя, 22:07 #253 #1092090

>>1092086
> Создавать переменные на стеке — не undefined behavior

Ответы92095

14 ноя, 22:12 #254 #1092095

>>1092090
Зачем ты отвечаешь мне? Я умею читать. ОП вопроса явно пропустил то, что речь именно о мапе, и из-за этого делает явно идиотское предположение:
>>Т.е.
>>int i;
>>мне гарантирует 0? Я думал, любая хуита может быть.

14 ноя, 23:25 #255 #1092137

Аноны, как в vs2012 включить long double? Там есть встроенное решение, или нужно собирать и подключать gcc-шные либы?

Ответы9214992173

14 ноя, 23:29 #256 #1092140

Вот функция, переводит десятичное число в двоичное, выводит на экран. Анон, расскажи быдлокодеру, что делает строчка binary(number>>1)?

void binary(int number)
{int remainder;
ind--;
if(number <= 1) {
cout<<number;
return;
}
remainder=number%2;
b[ind]=remainder;
binary(number>>1);
cout<<remainder;
}

Ответы9214592147

14 ноя, 23:34 #257 #1092145

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

Ответы92148

14 ноя, 23:35 #258 #1092147

>>1092140
(number>>1), операция правого сдвига.
Значением выражения является битовое представление левого операнда, сдвинутое вправо на количество разрядов, равное значению правого целочисленного операнда. При правом сдвиге на i разрядов первые i разрядов левого операнда заполняются нулями, если левый операнд имеет беззнаковый тип или имеет неотрицательное значение, в противном случае значение определяется реализацией. Последние i разрядов левого операнда теряются.
Тобишь binary(number>>1); осуществляет рекурсивный переход, передавая значение, вдвое меньшее чем number.

14 ноя, 23:41 #259 #1092148

>>1092145
Ди нахуй, индус.

14 ноя, 23:41 #260 #1092149

>>1092137
установи расширение для визуалки https://www.haskell.org/ghc/download_ghc_7_6_1.html#windows

Ответы92156

14 ноя, 23:53 #261 #1092156

>>1092149
Так ведь это не расширение, а другой компилятор

15 ноя, 00:50 #262 #1092173

>>1092137
>Аноны, как в vs2012 включить long double?
Вариант "никак" ты рассматриваешь? Тебе нужен 80-битный формат x87?

15 ноя, 01:16 #263 #1092180

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

Ответы92277

15 ноя, 10:48 #264 #1092277

>>1092180
>Есть ли сакральный смысл в назначении конкретных значений для членов перечисления (enum которое)?
Обратная совместимость.

15 ноя, 10:49 #265 #1092279

Точнее, гарантия независимости этой совместимости от добавления новых \лементов и перестановок.

15 ноя, 15:00 #266 #1092392

Анон, помоги мне найти баг в проекте на Qt, который сейчас я пишу в MSVS. Ошибка следующая:

main.obj : error LNK2001: неразрешенный внешний символ ""public: virtual class QSharedPointer<class AbstractEmployee> __cdecl EmployeeFactory::makeEmployee(struct EmployeeRecord const &)" (?makeEmployee@EmployeeFactory@@UEAA?AV?$QSharedPointer@VAbstractEmployee@@@@AEBUEmployeeRecord@@@Z)"

Реализация фабрики у меня такая:

employee_record.h
https://ideone.com/wBRIK9

employee_record.cpp
https://ideone.com/0nZYFp

employee_factory.h
https://ideone.com/Hk1SJx

employee_factory.cpp
https://ideone.com/LAQLoy

Компилируются все файлы, проблема возникает на этапе линковки. Фабричная функция определена. Не могу понять, как мог проебаться символ фабричной функции.

Ответы924049240592443

15 ноя, 15:22 #267 #1092404

>>1092392
Я могу ошибаться, но это из-за того, что определение шаблона должно быть в том же файле, что и объявление, в record.cpp у тебя подключается factory.h, а тело реализации не подключается, надо переносить из factory.cpp в factory.h

Ответы92410

15 ноя, 15:23 #268 #1092405

>>1092392
P.s. а фабричная функция определена, да только для юнита сборки factory.cpp.

15 ноя, 15:30 #269 #1092410

>>1092404
>Я могу ошибаться, но это из-за того, что определение шаблона должно быть в том же файле, что и объявление
Но у меня там нет шаблонов.

Ответы92418

15 ноя, 15:44 #270 #1092418

>>1092410
Не понимаю, почему не подключается реализация из factory.cpp. Когда я перенес определение фабричной функции в тело класса и закомментириовал ее реализацию в .cpp-файле, ошибка линковки исчезла.

15 ноя, 16:34 #271 #1092443

>>1092392
Лог компиляции на pastebin кинь.

Ответы92450

15 ноя, 16:43 #272 #1092450

>>1092443
Пиздец, после того, как я внес определение функции в тело класса и удалил ее оттуда, проект стал собираться корректно.

https://pastebin.com/qYYP1N3n

Ответы9245192452

15 ноя, 16:49 #273 #1092451

>>1092450
Ёбт, да я догадался до того, что если перенести определение в заголовок, то всё ок, ты мне лог с ошибкой покажи.

Ответы92453

15 ноя, 16:51 #274 #1092452

>>1092450
И это, verbosity выкрути на уровень побольше, чтобы команды компиляции было видно.

15 ноя, 16:52 #275 #1092453

>>1092451
>ты мне лог с ошибкой покажи
Уже не могу воспроизвести ошибку. Когда я снова удалил реализацию из тела класса и перенес ее в .cpp, все стало норм. Что за хуйня?

Ответы92456

15 ноя, 16:58 #276 #1092456

>>1092453
Аааааааааа, теперь понял. Значит, либо таймстамп не тот, либо глюк в студии. Всегда делай ребилд, если есть проблема, так как средства разработки не компилируют то, что уже компилировалось, и для этого сравнивают время изменения объектников и сурсов.

15 ноя, 19:48 #277 #1092515

Есть структура с полями данных: вектором и итератором(и пусть итератор в данный момент указывает на первый элемент вектора). Если сделать копию структуры "по-умолчанию", то итератор не испортится?
inb4: нет.

Ответы925709261992671

15 ноя, 21:05 #278 #1092570

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

15 ноя, 22:58 #279 #1092619

>>1092515
Испортится.
Делай свой конструктор копирования и восстанавливай итератор вручную. Для ассоциативных берешь элемент на который указывает итератор и ищешь такой же элемент в новом контейнере. Для вектора просто находишь смещение от begin.

16 ноя, 00:26 #280 #1092671

>>1092515
>итератор не испортится?
Исходный — нет.
Как и его копия. Только она указывать будет на старый вектор.

16 ноя, 01:29 #281 #1092697

>обращение к экспертам
На сервере лежит .dll библиотека, в которой есть некие функции.
Можно ли запуская программу у себя на компьютере как-то работать с функциями этой библиотеки, которая лежит на сервере?

Ответы92701

16 ноя, 02:18 #282 #1092701

>>1092697
Скачиваешь
@
работаешь.
А как иначе?
Либо она запущена на сервере, а ты уже через какой-то RPC дергаешь вызовы.

16 ноя, 15:17 #283 #1092882

42 Кб, 1500x694

122 Кб, 860x554

13 Кб, 898x388

22 Кб, 1088x362

Анон, подскажи плиз. Вкатываюсь в QT и немного не понимаю чяднт с формами.
Создаю две формы, одна при запуске вызывает появление другой. Другая внезапно появляется без границ и верхней панели.
1 пик - то как это выглядит в qt-дизайнере
2 пик - как это выглядит после запуска.
3 пик - код вызова второй формы из первой.
4 пик - код создания экземпляра второй формы, я погуглив пытался изменить свойства формы. My weapon does no effect!

Чего я хочу. Чтобы вторая форма появлялась в отдельном окне, у неё была рамка, верхняя строка и её можно было таскать.

В чём моя ошибка?

Ответы9290193446

16 ноя, 16:13 #284 #1092901

>>1092882
Ты бы хоть код нормально оформлял, серунька безмозглая.
Что это блядь за переменная asd ?
Тут экстрасенсы сидят по твоему?

По делу, ту делаешь владельцем второго окна первое окно, а ты не делай.

Ответы92962

16 ноя, 16:17 #285 #1092903

Анон, использую stod для конвертации строки в число, исключения ловлю. На каждое сработавшее исключение программа пишет в дебаг, что сработал std::invalid_argument exception. Их много, так что я не могу нормально лог читать. Как можно убрать сообщения о std эксепшонах из кода?

Ответы9290692909

16 ноя, 16:22 #286 #1092906

>>1092903
Весь лог засрало чем-то типа
Exception thrown at 0x00007FFEAD999D98 in Linoleum.exe: Microsoft C++ exception: std::invalid_argument at memory location 0x000000BF5BBC4B10.

Меня это расстраивает

16 ноя, 16:31 #287 #1092909

>>1092903
>Как можно убрать сообщения о std эксепшонах из кода?
Ну. Руками.

Ответы92925

16 ноя, 16:45 #288 #1092925

>>1092909
Я не так выразился. Как убрать вывод этих сообщений из Debug Log?

Ответы9298293295

16 ноя, 17:56 #289 #1092962

>>1092901
О, спасибо. asd - ну можно конечно обозвать бессмысленную переменную которая существует только для теста мультиоконности как-то вроде "testWindow" но зачем? Ведь строчек кода мало и всё читаемо. Или нет?

16 ноя, 18:48 #290 #1092982

>>1092925
grep не завезли?

16 ноя, 21:08 #291 #1093054

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

16 ноя, 21:12 #292 #1093055

Найдётся ли в этом треде достаточно не заёбаный залётными долбоёбами человек, который согласится скомпилировать этот проект для 32 битной системы?
https://github.com/aseprite/aseprite/releases/tag/v1.2.4

Ответы9305693085

16 ноя, 21:13 #293 #1093056

>>1093055
Под венду, конечно же.

16 ноя, 21:20 #294 #1093061

>>1088811
просмотрщик пикчей (бмп, жпг, пнг, гиф) с отрисовкой руками без либ. а то каждый может сделать:
libaname::load("yoba.jpg");
libaname::show();

16 ноя, 21:31 #295 #1093067

>>1088854
> Поясните, почему где-то требуются разработчики именно на чистом С, если есть С++, который полностью включает в себя С.
> если есть С++, который полностью включает в себя С
сразу видно, что ты ни того, ни другого языка не знаешь.

попробуй скомпилять этот C код плюсавым компилятором: https://ideone.com/JaWLdf
а теперь лососни тунца за щёку, пидр

16 ноя, 21:50 #296 #1093085

>>1093055
Собирал как то, могу завтречка.

Ответы93094

16 ноя, 21:53 #297 #1093087

>>1088811
Напиши скачивалку сайтов. Http правда, с https без либ заебешься...

16 ноя, 21:59 #298 #1093094

>>1093085
Круто, буду очень благодарен. Закинь в тред ссылку на какой-нибудь яндекс-диск или типа того, буду чекать завтра периодически.
Заранее спасибо, няша.

Ответы93417

17 ноя, 04:11 #299 #1093268

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

Ответы9326993298933619343593447

17 ноя, 04:18 #300 #1093269

>>1093268
рекомендую начать с ассемблера

17 ноя, 08:40 #301 #1093295

>>1092925
Дебуг лог - это в студии?

17 ноя, 08:49 #302 #1093298

>>1093268
Кому нужно? У меня уже есть Nox.

17 ноя, 12:41 #303 #1093361

>>1093268
Танненбаума наверни, там само пойдёт.

17 ноя, 14:23 #304 #1093417

>>1093094
Лови, ничего сложного, по гайду, но геморно.
http://dropmefiles.com/Vbw56
Правда я сейчас заметил что собрал последнюю дев-версию, а не ту что ты кинул, принципиально?

Ответы93453

17 ноя, 14:59 #305 #1093435

>>1093268
Предлагаю начать с получения хорошего образования в области системной инженерии, разобраться с архитектурой ЭВМ, наборами инструкций ARM и x86, моделями памяти, теорией трансляции, параллельно получать второе образование в области менеджмента и международных отношений. Дальше сделать форк QEMU, разработать драйвера виртуальных переферийных устройств, ну, параллельно ты с плюсами сам разберёшься. Лет через 8-10 будет готовый продукт.
Пиздец ты клоун

Ответы93496

17 ноя, 15:21 #306 #1093446

>>1092882
>В чём моя ошибка?
Вот тут: new QtGuiClass( this ). Когда указываешь виджет в конструкторе, новый виджет становиться у него дочерним.

17 ноя, 15:22 #307 #1093447

>>1093268
Зачем?

17 ноя, 15:30 #308 #1093453

2 Мб, 1300x957

486 Кб, 640x497

>>1093417
Заебися. Спасибо, няша, держи тонны нефти и 2 чая.
То, что версия дев - ничего страшного, мне просто хотелось свежую и просто скинул ссылку на стабильный релиз.
Ещё раз спасибо большое.

Ответы93468

8 Кб, 427x184

17 ноя, 15:56 #309 #1093468

>>1093453
Насколько в арчике все проще.

17 ноя, 16:39 #310 #1093496

>>1093435
Че так много то?
Тот же Bluestacks эмулятор, что ли дохрена сложный в разработке был?

Ответы93553

17 ноя, 18:17 #311 #1093549

Как передача параметров в функцию в обратном порядке помогает получить возможность использовать неопределенное множество параметров?
Какая разница как их складывать, если я заранее не знаю, сколько их у меня будет, ведь stack pointer будет указывать всё равно не на первый (в порядке подачи в функцию) аргумент функции, а на всякую служебную информацию, типа адреса возврата, память, куда запишется возвращаемое значение и состояние регистров до передачи управления функции

Ответы9358493714

17 ноя, 18:26 #312 #1093553

>>1093496
Да вообще фигня, говорю же, форкаешь QEMU, пишешь драйвера...

17 ноя, 18:55 #313 #1093563

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

https://pastebin.com/JSFR1XAy

Ответы9356593743

17 ноя, 18:57 #314 #1093565

>>1093563
>Найти в массиве самую длинную убывающую последовательность
нашел, куда писать?

17 ноя, 19:08 #315 #1093569

как сделать так чтоб счетчик копий между array и list не считал копии дважды? т.е [2,1,3,5] p[3,2,3] 3 должно посчитать как копию только 1 раз а не 2. (в аррей копий нет, только в лист). этот код работает но считает каждую копию, что надо добавить?. анон, помоги бомжу

int count_array_list(int A[], int n, plist p){
int count = 0;
int i;

if(n == 0 || p == NULL)
return 0;
else
while(p != NULL) {
for(i = 0; i<n; i++) {
if(A == p->info)
count++;
}
p = p->next;
}
return count;
}

Ответы9359093732

17 ноя, 19:23 #316 #1093584

>>1093549
Я не знаю, про какую ОС и архитектуру ты спрашиваешь, и calling conventions и направления роста стека я уже ни для чего не помню. Могу нагуглить за тебя и объяснить.

Ответы93606

17 ноя, 19:27 #317 #1093590

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

Ответы93598

17 ноя, 19:39 #318 #1093598

>>1093590
это типа философский ответ или ты нихуя не понял?

Ответы93699

17 ноя, 19:54 #319 #1093606

>>1093584
Я думал, что это возможно при любой архитектуре.. Ну, x86, например.

Ответы93699

74x53

17 ноя, 20:46 #320 #1093647

Почему указатель на первый элемент массива можно вычесть из указателя на 3ий и получить 2?
int m[10] = {1,200,3,4,5};
int p = m;
int q = &m[2];

std::cout <<p << std::endl;
std::cout << q << std::endl;
std::cout << q - p << std::endl;

Это ведь не вычитание адресов друг из друга 8 это не 2

Ответы93699

17 ноя, 22:00 #321 #1093699

>>1093647
Потому что, вычитая указатели, ты получаешь смещение в элементах, а не разницу адресов.
>>1093598
Да.
>>1093606
Никаких объяснений не не нашёл, вывод только один: наследственность, как и little endian.

Ответы93710

17 ноя, 22:16 #322 #1093710

>>1093699
>Потому что, вычитая указатели, ты получаешь смещение в элементах, а не разницу адресов.
Почему тогда их нельзя складывать?

Ответы937129372793729

17 ноя, 22:20 #323 #1093712

>>1093710
Потому что это не определено.

17 ноя, 22:22 #324 #1093714

>>1093549
>Как передача параметров в функцию в обратном порядке помогает получить возможность использовать неопределенное множество параметров?
Так, что из первого (второго или любого другого фиксированного) ты можешь узнать, сколько у тебя параметров идёт следом, т.к. первый параметр, при передаче аргументов задом на перёд, будет идти первым на стеке и известно, как к нему получить доступ.

Ответы93728

17 ноя, 23:00 #325 #1093727

>>1093710
Ты ещё спроси, почему на ноль делить нельзя.

17 ноя, 23:02 #326 #1093728

>>1093714
>Так, что из первого (второго или любого другого фиксированного) ты можешь узнать, сколько у тебя параметров идёт следом
От того, в каком порядке ты пушишь параметры, нихуя не зависит. Так же, как ты узнаёшь о том, что параметры кончились, ты можешь узнать и о том, какого размера список параметров.

Ответы9373193733

17 ноя, 23:03 #327 #1093729

>>1093710
Потому что ты можешь
Ptr2 - Ptr1 = смещение
Ptr1 + смещение = Ptr2
А что ты ожидаешь от Ptr1 + Ptr2?

17 ноя, 23:05 #328 #1093731

>>1093728
Параметры могут вычитываться по ходу из строки форматирования как у принтфа
Символом последнего параметра может идти NULL

Ответы93773

17 ноя, 23:13 #329 #1093732

>>1093569
Просто поменяй внутренний и внешний цикл.
У тебя что написано?
Для каждого p: для каждого a: если равно, посчитать;
А будет:
Для каждого a: для каждого p: сравнить; если равно, посчитать и пропустить остаток цикла по p.

17 ноя, 23:32 #330 #1093733

>>1093728
>От того, в каком порядке ты пушишь параметры, нихуя не зависит.
Зависит их расположение в стеке.

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

Ответы93773

17 ноя, 23:59 #331 #1093742

#include <algorithm>
#include <array>
#include <functional>
#include <iostream>
#include <iterator>

int main() {
std::array<int, 9> arr{ { 0, 1, 4, 1, 7, 3, 0, 6, -1 } };
auto seq_max = std::max_element(arr.begin(), arr.end());
auto seq_next_min = std::adjacent_find(seq_max, arr.end(), std::less<int>());
std::cout << std::distance(arr.begin(), seq_max) << ".." << std::distance(arr.begin(), seq_next_min);
return 0;
}

Ответы93743

17 ноя, 23:59 #332 #1093743

>>1093563
>>1093742

18 ноя, 01:15 #333 #1093773

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

Ответы93859

18 ноя, 01:39 #334 #1093787

>>1085579 (OP)
Почему C++ такой лживый и делает вызов constexpr-функции, которая только возвращает число 42, вместо подстановки числа 42 во время компиляции?

Ответы937959384793860

18 ноя, 01:46 #335 #1093795

>>1093787
Компилятор недопилен значт.

18 ноя, 10:49 #336 #1093847

>>1093787
Может у тебя не все требования выполнены? Нельзя виртуальные функции, функции с нетривиальными параметрами, еще какая-то херня.

18 ноя, 11:46 #337 #1093859

>>1093773
>размера списка параметров
Мы про число параметров говорим.

18 ноя, 11:47 #338 #1093860

>>1093787
constexpr не гарантирует вычисление в компайл-тайм.

18 ноя, 12:27 #339 #1093877

>>1086684
Метапрограммирование - хорошая штука. Высокий порог вхождения, выше зарплата (на 20% лол), защита от индусов, экономия перформанса на виртуальных вызовах (т.е. на спичках).

Есть один существенный минус - медленно конпелируется и ещё медленнее линкуется на средних и больших проектах.

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

Ведь если ты выполняешь задания быстрее чем они, значит твоя зарплата выше. Верно?

Ответы93885

18 ноя, 12:52 #340 #1093885

>>1093877
Ссылку не читай, сразу отвечай.

Ответы93921

18 ноя, 14:23 #341 #1093921

>>1093885
Пока откроешь и раскуришь твою ссылку - уже успел баг в кодеблоксе исправить.

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

Пока ты будешь дрочить свой Си++ - ни одна тня тебе не даст.

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

Ответы940259412094125

18 ноя, 14:27 #342 #1093922

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

ИМХО, метаклассы - это, конечно хорошо и очень здорово, но я бы предпочел рефлексию на основе reflexpr или как его.

18 ноя, 15:45 #343 #1093948

>>1086684
Мне очень понравилось, сразу столько бойлерплейта на свалку. Но. Блять. $почему $сука, $почему.

Ответы9412594126

18 ноя, 17:47 #344 #1094010

Посоны, хочу вкатиться в QT, ну и видимо придется вкатываться в C++ PYQT - говно. Работаю в автоматизации, программирую постольку поскольку, чтобы было что кушать, сейчас смотрю на QT и понимаю, что это то, что мне нужно. Есть какие-то книжки, чтобы охватывали сразу и C++ и QT, чтобы отдельно не учить C++ за 21 день и QT, а сразу прочесть книгу и уже можно писать какие-то проекты?

Ответы94127

18 ноя, 18:05 #345 #1094017

>>1085579 (OP)
Анон, помоги написать шаблонную функцию удаления n-го элемента контейнера, которую можно было бы использовать в erase-remove идиоме, и которая была бы эффективной по времени и работала в том числе с некорректными входными данными.

https://ideone.com/4WLJD5

Ответы94030

77 Кб, 1280x960

18 ноя, 18:06 #346 #1094018

Продублирую задачку плюсовикам.
Тут есть один граф, представлен в виде 2D массива, который во входящих данных у меня есть. Значения ячеек могут принимать как отрицательные так и положительные числа. Как мне из стартовой точки до финишной посчитать максимальный профит? Я даже хуй знает с какой стороны к этой задаче подходить. Если код на питоне будет - вообще замечательно. С C++ тоже разберемся. Ах да, при прохождении через ячейку она обнуляется, поэтому в строке можно ходить туда-сюда. Влево и вправо. Перемещаться по высоте можно только вниз.

Ответы94243

18 ноя, 18:42 #347 #1094025

>>1093921
>Пока ты будешь дрочить свой Си++ - ни одна тня тебе не даст.
И так не даст, а тут хотя бы подрочить можно.

18 ноя, 18:53 #348 #1094030

>>1094017
>> if (std::distance(p, q) == 0) return p;
>> if (std::distance(p, q) < n) return q;
дичь какая, ты, надеюсь, понимаешь, что q указывает на элемент контейнера, следующим за последним
дальше не читал

Ответы94032

18 ноя, 18:54 #349 #1094032

>>1094030
алсо, когда ты подсчитал distance, ты сам себе за шиворот насрал

Ответы94071

18 ноя, 21:39 #350 #1094071

>>1094032
>когда ты подсчитал distance, ты сам себе за шиворот насрал
Почему?

>дичь какая, ты, надеюсь, понимаешь, что q указывает на элемент контейнера, следующим за последним
Вместо q прописал std::prev(q) и получил неправильный ответ. Если оставить q, получаю тайм лимит.

Ответы94173

19 ноя, 00:59 #351 #1094120

>>1093921
Вернись в /b/.

19 ноя, 01:26 #352 #1094125

>>1093921
мартыха, на вебе программирование не заканчивается.

>>1093948
Синтаксис гарантированно поменяется

19 ноя, 01:26 #353 #1094126

>>1093948
Теперь код на C++ будет похож внешне на PHP код с этими баксами, лолец)

19 ноя, 01:27 #354 #1094127

>>1094010
По QT есть только Макс Шлее, но вообще, надо изначально C++ знать, чтобы смочь в qt.

Если тебе надо что-то на гуйне писать - посмотри шарпы или жабу (если надо кроссплатформенность).

Ответы94194

53 Кб, 569x775

19 ноя, 01:44 #355 #1094135

Анон, выручай. В си у меня познания крайне дерьмовые, мне просто нужно заставить этот чёртов мк под управлением libopencm3.

Ответы94247

112 Кб, 767x1024

19 ноя, 03:10 #356 #1094150

Есть ли тут кто-нибудь, кто знает C++11 и ищет работу в Дс2?

Ответы941519415494247

19 ноя, 03:24 #357 #1094151

>>1094150
Есть.

Ответы94153

213 Кб, 960x1280

19 ноя, 04:06 #358 #1094153

>>1094151
Ну ты контакты оставь или на почту резюме кинь.
someonefriZ(ominternetANUSyander!2xPUNCTUMr.*Su

Ответы94367

19 ноя, 04:09 #359 #1094154

>>1094150
Скинь вакансию.

Ответы94155

19 ноя, 04:16 #360 #1094155

>>1094154
Нормальная миддловая вакансия, чего выебуешься?

19 ноя, 07:11 #361 #1094173

>>1094071
>> Почему?
Потому что подумай, как быстро посчитается distance для элементов list, он будет перебирать их по-очереди, пока не достигнет конечного элемента.
Далее, смотрим, что ты меняешь позициями итераторы p и std::prev(p), если у тебя итератор однонаправленный (судя по всему из описания аргумента шаблона), тогда prev ты не возьмешь!

Ну и вообще, надо было так делать: https://ideone.com/JTIcSH

19 ноя, 08:45 #362 #1094194

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

19 ноя, 11:15 #363 #1094243

>>1094018
Считаешь максимальный профит для каждого элемента каждой строчки последовательно, начиная с первой. Код пиши сам.

19 ноя, 11:21 #364 #1094247

>>1094135
Покажи хоть одну строчку с алиасом.
>>1094150
Удалёнка интересна, вариант?

Ответы9426094307

278 Кб, 1000x1144

19 ноя, 12:02 #365 #1094260

>>1094247
Нет, увы, но немного помогаем с релокейтом.

19 ноя, 13:49 #366 #1094307

>>1094247
#pragma weak wwdg_isr = blocking_handler
#pragma weak pvd_isr = blocking_handler
#pragma weak tamper_isr = blocking_handler
#pragma weak rtc_isr = blocking_handler
#pragma weak flash_isr = blocking_handler
#pragma weak rcc_isr = blocking_handler
#pragma weak exti0_isr = blocking_handler
#pragma weak exti1_isr = blocking_handler
#pragma weak exti2_isr = blocking_handler

И т.д. заглушки, да.

Ответы94505

19 ноя, 14:04 #367 #1094318

Антоны, как засунуть динамический массив в параметры функции? Например searchHui(massiv[x])

Ответы94322

19 ноя, 14:08 #368 #1094322

>>1094318
searchHui(const std::vector<T>& massiv)

19 ноя, 15:02 #369 #1094367

>>1094153
>Ну ты контакты оставь
anime.dz1debil.1999ANUSmail(DmPUNCTUMr0c(u

19 ноя, 15:11 #370 #1094372

Анон, есть такая структура данных, которая хранит элементы в списке векторов. Чтобы разобраться в том, как она работает, достаточно разобраться в функции size(). Нужно написать для этой структуры итератор, который выводит все элементы. Итератор проходит по всем векторам, заглядывает в их содержимое, а когда вектор заканчивается, переходит к следующему вектору. Я попытался это реализовать, но класс итератора не компилируется. Не знаю, как написать конструктор, какое поле будет храниться в итераторе и как сделать обход элементов. Помоги написать итератор.

https://ideone.com/Vd0Vjs

Ответы9438594511

19 ноя, 15:39 #371 #1094385

>>1094372
> class Iterator : public std::iterator<std::forward_iterator_tag, ValueType>

Такое задепрекейтили в C++17. Ну и уже давно, до депрекейта, рекомендуется делать через iterator_traits.

19 ноя, 15:50 #372 #1094392

Витжуальные девелоперы, помогите! У меня есть несколько проектов. Часть из них используют один и тот же код, как быть?
1) Создать библиотеку.
2) Использовать "Проект общих элементов"

Первый метод мне не нравится из-за того, что один из проектов должен потом компилироваться через gcc, а это значит, что мне в нем еще придется компилить библиотеки.
Второй метод приводит к тому, что при подкулчении проекта общих элементов, он компилится целиком, вне зависимости от того, действительно ли мне нужны все его элементы

Есть ли еще способы?

Ответы94505

19 ноя, 16:29 #373 #1094431

void shift(int* a) {
for (int i = 0; i < sizeof(a)/sizeof(a[0]) - 1; i++) {
int tmp = a;
a = a[i+1];
a[i + 1] = tmp;
}
}

int main()
{
int m[] = {1,200,3,4,5,7,6,88,99,66};
const int N = sizeof(m) / sizeof(m[0]);

shift(m);

return 0;
}

Почему в main эта херня считает правильно 10 элементов, а сделав в функции тоже самое в for оно выдаёт 1 ёбаный элемент??
сори за разметку, просто в пастбин никто читать не будет

Ответы944379444094505

19 ноя, 16:37 #374 #1094437

>>1094431
ну вот, на всякий случай с отступами

https://pastebin.com/3B5ZkkC3

Ответы94439

19 ноя, 16:39 #375 #1094439

>>1094437
Отступы делаются табами, а пробелами — выравнивание.

19 ноя, 16:40 #376 #1094440

>>1094431
>Почему в main эта херня считает правильно 10 элементов, а сделав в функции тоже самое в for оно выдаёт 1 ёбаный элемент??
Потому что так работает язык.

19 ноя, 17:04 #377 #1094447

Кто прогал на Qt? Есть пара вопросиков.
Большие бинарники под винду получаются, если standalone и без всяких зависимостей от библиотек?

Ответы94505

202 Кб, 988x564

19 ноя, 17:07 #378 #1094449

Смотрю сейчас на степике курс по программированию на c++

https://stepik.org/lesson/540/step/5?course=Программирование-на-языке-C++&unit=863

вот на этом видео появился вопрос, зачем делать указатель на указатель в данном случае ? В чем выигрыш ?
Или он просто хотел показать, что "так можно"?

Ответы94453944919450094505

19 ноя, 17:08 #379 #1094453

>>1094449
>вот на этом видео появился вопрос, зачем делать указатель на указатель в данном случае ?
Подорвать твою нюфажную жопу.

Ответы94458

19 ноя, 17:16 #380 #1094458

>>1094453
Ясно)

55 Кб, 421x700

19 ноя, 18:15 #381 #1094491

>>1094449
> зачем делать указатель на указатель
Ох, как же хорошо, что я забил на кресты еще много много лет назад.
Какой же это инфернальный пиздец.

Ответы94500

19 ноя, 18:24 #382 #1094500

>>1094491
Это удобно, когда, например, есть динамический массив указателей (записная книжка из фамилий C-style строк),
тогда да, ты создаешь указатель на начало массива из этих указателей, получается указатель на указатель.

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

>забил
Не осилил универский курс крестов?

Ответы94507

19 ноя, 18:30 #383 #1094505

>>1094307
Пиздец, я-то думал, что у тебя там using. Ни разу эту хуйню не видел.
Так, блядь, а .c у тебя тоже компилируется? У тебя ошибки компиляции не того файла, с которого ты скриншот сделал, а того файла, в котором алиасы написаны. Читни про раздельную компиляцию. Как решить:
а) если из vector_nvic.c не должно ничего экспортироваться, исключаешь его из сборки
б) в противном случае добавляешь в vector_nvic.c
extern void blocking_handler(boid);
>>1094392
>Есть ли еще способы?
Ебануть интерфейс на С-функциях и сделать C++-адаптор на заголовочном файле.
>>1094431
Потому что размер С-массива известен только тому коду, в котором он определён с размером. Передаёшь массив туда, где нужен указатель - нога мертва. Это сипласплас, блядь, юзай вектор.
>>1094447
Где-то сравнение видел - большие (есть некоторая экономия в сравнении с динамическими либами, но не такая большая, как хотелось бы). Олсо, где-то видел статейку о том, что можно размер либ сильно сократить, так как, например, библиотека юникода тащит слишком много.
>>1094449
Заголовок прочти.
> В чем выигрыш ?
Можно не использовать исключения для сообщения об ошибке. В некоторых случаях это важно, так как у исключений есть оверхед.

Ответы9454894569

19 ноя, 18:33 #384 #1094507

>>1094500
>Не осилил универский курс крестов?
Просто другие дела появились. Университетский то осилил.
А потом, не возникало ни желания, ни необходимость, мучить себя этим пиздецом.
А сейчас то, есть rust, например, в C# завезли работу с SIMD, нет никаких оснований использовать кресты хоть для чего-то.

Ответы94548

19 ноя, 18:38 #385 #1094511

>>1094372
Анон, хэлб.

Ответы94523

19 ноя, 18:53 #386 #1094523

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

19 ноя, 19:13 #387 #1094544

Напишите функцию поиска первого вхождения шаблона в текст. В качестве первого параметра функция принимает текст (C-style строка), в которой нужно искать шаблон. В качестве второго параметра строку-шаблон (C-style строка), которую нужно найти. Функция возвращает позицию первого вхождения строки-шаблона, если он присутствует в строке (помните, что в C++ принято считать с 0), и -1, если шаблона в тексте нет.

Учтите, что пустой шаблон (строка длины 0) можно найти в любом месте текста.

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

Я написал свою вариацию наивного алгоритма поиска подстроки, но почему-то платформа степик со своими скрытыми тестами считает решение неверным
(не понимаю зачем они это делают, если еще учесть, что у них нет встроенной IDE, а просто текстовое поле для отправки, это вообще дно, они, как кстати большинство отечественных вузовских преподавателей объясняют техническую отсталость оборудования дополнительной хардкорностью, мол это что бы вам было сложнее и вы благодаря этой сложности лучше учились, на самом деле это ошибка.) соре за батхёрт, но накипело:

https://pastebin.com/LjUzxSuF

19 ноя, 19:16 #388 #1094548

>>1094505
>Это сипласплас, блядь, юзай вектор.
Я прохожу курс, где есть упражнения с С-подобными строками.
>Можно не использовать исключения для сообщения об ошибке. В некоторых случаях это важно, так как у исключений есть оверхед.
Спасибо

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

19 ноя, 19:38 #389 #1094569

>>1094505
>Читни про раздельную компиляцию.
Спасибо няш, кое-как перетрусил проект, повтыкав только необходимые .с-шки, вываливать перестало и скомпилировалось правда, нихуя не заработало, но с этим уже сам как-нибудь разберусь.

19 ноя, 21:05 #390 #1094613

sup. В этом вашем С++ можно задавать количество и имя объектов с клавиатуры?
В шараге написать задание что описать класс который содержит информацию о вашей библиотеке етц.
Вот можно чтобы нажал кнопку оно одну книгу записало, нажал второй раз и ещё одну?
да тупой вопрос но я ничего не нагуглил

Ответы9462294632

sage 19 ноя, 21:12 #391 #1094622

>>1094613
лабы идут на хуй

19 ноя, 21:18 #392 #1094632

>>1094613
Все можно. В этом и есть смысл классов и объектов.

Ответы94634

19 ноя, 21:19 #393 #1094634

>>1094632
Круто, а как это сделать-то?

Ответы9464494665

19 ноя, 21:28 #394 #1094644

>>1094634
Тащем-та никаких секретов тут нет, просто садишься и делаешь без задней мысли.

Ответы94646

19 ноя, 21:30 #395 #1094646

>>1094644
У вас тут совсем всё хуёво, да?

Ответы9465094656

19 ноя, 21:35 #396 #1094650

>>1094646
Какой вопрос, такой и ответ.

Ответы94652

19 ноя, 21:39 #397 #1094652

>>1094650
Ясно, спасибо.

19 ноя, 21:41 #398 #1094656

>>1094646
Да.
Съеби.

19 ноя, 22:03 #399 #1094665

>>1094634
В общих чертах так:
class Book { string name, author, прочая поебень }
class Library { Book []books }
int main() {
int num;
cout << "Kol-vo knig?\n";
cin > num;
Library lib;
lib.books = new Book[num];
for(int i = 0; i < num; i++) {
Book book = new Book();
cout << "Kniga №" << i << " Nazvanie?\n";
cin >> book.name;
cout << "Avtor?";
cin >> book.author;
lib.books = book;
}
}

Если можно векторы, то можно еще так
class Book { string m_name, m_author; Book(string name, author) { m_name=name; m_author = author; }
class Library { vector<Book> books; }
int main() {
while(1) {
string name, author;
Library lib;
cout << "Nazvanie? (ENTER to quit)\n";
cin >> name;
if(name == "") break;
cout << "Author?\n";
cin >> author;
lib.books.push_back(new Book(name, author));
}
}

19 ноя, 22:03 #399 #1094665

>>1094634
В общих чертах так:
class Book { string name, author, прочая поебень }
class Library { Book []books }
int main() {
int num;
cout << "Kol-vo knig?\n";
cin > num;
Library lib;
lib.books = new Book[num];
for(int i = 0; i < num; i++) {
Book book = new Book();
cout << "Kniga №" << i << " Nazvanie?\n";
cin >> book.name;
cout << "Avtor?";
cin >> book.author;
lib.books = book;
}
}

Если можно векторы, то можно еще так
class Book { string m_name, m_author; Book(string name, author) { m_name=name; m_author = author; }
class Library { vector<Book> books; }
int main() {
while(1) {
string name, author;
Library lib;
cout << "Nazvanie? (ENTER to quit)\n";
cin >> name;
if(name == "") break;
cout << "Author?\n";
cin >> author;
lib.books.push_back(new Book(name, author));
}
}

Показать весь текст
Ответы94668

19 ноя, 22:08 #400 #1094668

>>1094665
А да, и я наебался, cin же читает до ближайшего пробела.
Так что лучше читать строку так
string name;
readline(cin, name);

20 ноя, 11:03 #401 #1094869

std::array<std::string, 10> numbers = {"zero","one","two","three","four","five","six","seven","eight","nine"};
std::string number = "";
std::cin>>number;

bool exists = std::find(std::begin(numbers), std::end(numbers), number) != std::end(number);

Вот у меня есть массив и я решил узнать, есть ли в массиве элемент, совпадающий с number, на что мне выдает ошибку на этапе компиляции.

Ошибка1error C2678: бинарный "!=": не найден оператор, принимающий левый операнд типа "std::_Array_iterator<_Ty,_Size>" (или приемлемое преобразование отсутствует)

https://pastebin.com/vMBrWDmy - на всякий.

Ответы94927

20 ноя, 13:48 #402 #1094927

>>1094869
>bool exists = std::find(std::begin(numbers), std::end(numbers), number) != std::end(number);
>std::end(number);
Опечатку исправил?

Ответы94928

20 ноя, 13:52 #403 #1094928

>>1094927
Бляяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяя

Вот это я даун.

Ответы94929

20 ноя, 13:54 #404 #1094929

>>1094928
Удачи

Ответы94930

20 ноя, 13:57 #405 #1094930

>>1094929
Спасибо.

20 ноя, 14:31 #406 #1094940

https://ideone.com/jWpXl9

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

Ответы94941

20 ноя, 14:33 #407 #1094941

>>1094940
Какая задача ставится?

Ответы94942

20 ноя, 14:35 #408 #1094942

>>1094941
Блин, я думал все мои мысли умееют читать, сорян.

Ну вот пользователь вводит число, соответственно записывается в int через std::cin, если это не число, то он будет продолжать вводить, пока наконец-то не введет валидное число, ну и соответственно ему говорится, мол ты вводишь не число, вводи еще раз.

Ответы94947

20 ноя, 14:45 #409 #1094947

>>1094942
Все, уже нашел солюшн. В теле цикла ставлю

std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Ответы94963

20 ноя, 15:27 #410 #1094963

>>1094947
Проверку .eof() не забудь.

20 ноя, 18:43 #411 #1095073

Аноны, есть чувство, что я овощ.

Короче, дефолтная задачка, вычислить сумму ряда с точностью до eps через рекурсию.
Написал на C++ и Паскале.
На паскале все считает, на сипипи всегда ноль выводит.
Где я проебался?

С++
#include "stdafx.h"
#include <iostream>

//Найти сумму ряда с точностью eps , общий член которого равен An = 1/((3n-2)(3n+1))
#define eps 0.01

using namespace std;

double sum(int n)
{
if ((1 / ((3 n - 2)(3 n + 1))) < eps) return 0;
else return (1 / ((3 n - 2)(3 n + 1))) + sum(n + 1);
}

void main() {
cout << "sum = " << sum(1) << endl;
}

Pascal
program summa;
const eps: real = 0.01;

function sum(n: integer): real;
begin
if ((1/((3n-2)(3n+1)))<eps) then
sum := 0
else sum:= (1/((3n-2)(3*n+1))) + sum(n+1);
end;

begin
writeln(sum(1));
end.

20 ноя, 18:43 #411 #1095073

Аноны, есть чувство, что я овощ.

Короче, дефолтная задачка, вычислить сумму ряда с точностью до eps через рекурсию.
Написал на C++ и Паскале.
На паскале все считает, на сипипи всегда ноль выводит.
Где я проебался?

С++
#include "stdafx.h"
#include <iostream>

//Найти сумму ряда с точностью eps , общий член которого равен An = 1/((3n-2)(3n+1))
#define eps 0.01

using namespace std;

double sum(int n)
{
if ((1 / ((3 n - 2)(3 n + 1))) < eps) return 0;
else return (1 / ((3 n - 2)(3 n + 1))) + sum(n + 1);
}

void main() {
cout << "sum = " << sum(1) << endl;
}

Pascal
program summa;
const eps: real = 0.01;

function sum(n: integer): real;
begin
if ((1/((3n-2)(3n+1)))<eps) then
sum := 0
else sum:= (1/((3n-2)(3*n+1))) + sum(n+1);
end;

begin
writeln(sum(1));
end.

Показать весь текст
Ответы9507795081

20 ноя, 18:44 #412 #1095077

>>1095073
Ага, блядь, в разметке я тоже проебался.

20 ноя, 18:54 #413 #1095081

>>1095073
Снят с аукциона.
1.0 не равно 1.
Всё дело в том, что я делил единицу.
Ну, пиздец.
Прошу прощения.
Овощ.

20 ноя, 23:23 #414 #1095210

На C++ возможно написать бот для вк и парсинг сообщений вк?

Ответы952379524395396

20 ноя, 23:52 #415 #1095237

>>1095210
Покопай в сторону curl, больше ничего не могу сказать

21 ноя, 00:06 #416 #1095243

>>1095210
Возможно

85 Кб, 639x716

21 ноя, 02:03 #417 #1095278

Где можно почитать четко и доходчиво про взаимодействие итераторов, дабл-линкд листов и нодов. С примерами хорошего кода, а не ебаной мешаниной из нерабочего кода со стак оверфлоу.
Мне сдавать ассайнмент в среду, а я уже 3 день нихуя не могу разобраться, как правильно делать ебаный insert в отсортированный линкд-лист. Помогите, пожалуйста.

Ответы9532995396

21 ноя, 04:08 #418 #1095329

>>1095278
>> insert в отсортированный линкд-лист
Ты поехавший что ли?! В linked list проще выполнять сортировку вставками, чем то, что ты предлагаешь.
Тебе нужен skip list если ты хочешь воспользоваться преимуществами двусвязного списка и одновременно быстрым нахождением нужного элемента. А если не хочешь городить велосипеды, то используй std::set и все нахуй

21 ноя, 09:11 #419 #1095396

>>1095210
>парсинг сообщений вк?
Нахуя? Есть готовые библиотеки для работы с ВК.
>>1095278
Документацию наверни, лолик.
http://en.cppreference.com/w/cpp/container/list/insert

21 ноя, 09:12 #420 #1095397

Ну и про iterator invalidation не забудь читнуть.

21 ноя, 14:13 #421 #1095502

Тут на код ревью (не моего кода) один человек настойчиво пытается донести, что struct'ами в с++ пользоваться зашквар (Frankly, I cannot see any reason to create structs when coding in C++.), прикрывается рекомендательными гайдлайнами (имеющими слово preferred). Собственно, каково ваше отношение к структурам?
В данном случае так получается, что есть источник данных, передающий в стурктуре А данные драйверу, который из этой структуры переносит данные в структуру Б от некой сторонней либы (на си написанной), и, собственно, этой сторонней либе эту структуру и посылает. Вот структуру А он хочет на класс заменить. На кой чёрт тут могут понадобиться классы-то? "Ну тип в будущем там может геттеры и код инициализирующий менять не надо, если поля добавятся" не очень катит, так как если что-то и изменится, то код использующий это поменять-таки придётся.
Чем так плохи вообще struct'ы-то могут быть? Это ж хороший и удобный контейнер для разнотипных данных, не? Ему ещё и C array'и не нравятся, но это ладно.

Ответы9551295513

21 ноя, 14:15 #422 #1095506

И снова вопросы:
boost::asio::ip::tcp::socket.
Во-первых: у меня есть сразу несколько потоков, которые вызывают io_service::run(), следовательно асинхронные вызовы могут быть исполнены параллельно. Не сломается ли все, если я разом кину и async_write и async_read? Заботиться ли asio о разделении сокета самостоятельно, или это должен делать я?
Во-вторых: Информация, которую я передаю, может различаться по важности. Иными словами может так быть, что я захочу прервать передачу какого-то куска данных, что бы вместо него отправить более важный кусок. Как такое вообще делается?

Ответы95550

21 ноя, 14:19 #423 #1095512

>>1095502
Так, еще раз, чем class отличается от struct, за вычетом дефолтного спецификатора доступа? И что это за гайдлайн?

Ответы95520

21 ноя, 14:20 #424 #1095513

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

Ответы95520

21 ноя, 14:39 #425 #1095520

>>1095512
>Так, еще раз, чем class отличается от struct, за вычетом дефолтного спецификатора доступа?
Э, ну, если ты намекаешь на то, что это почти одно и то же, то я не против и относительно в курсе.

>И что это за гайдлайн?
Компании.

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

>структуры это какая-то неюзабельная тема по-моему
Но чем? Меня, например, даже в питоне напрягает порой отсутствие структур, благо namedtuple есть, спасает.
>даже с точки зрения синтаксиса.
Но он идентичен же, лол.

>То есть в классах всё приятно и понятно
Есть хуёвинка с полями, в которых данные лежат. Куда понятнее-то?

>То есть структуры -- это си-стайл
Ну так оно для дублирования си-стайл интерфейса и сделано же.

Я так-то не против классов, меня вот именно в этмо месте это очень смущает, по-моему, идёт вразрез с "нужно уметь выбирать инструмет под задачу".

Не подумайте, что я сопротивляюсь и линию свою гну, просто аргументы привожу в надежде к просветлению прийти.

Ответы95532

21 ноя, 15:06 #426 #1095532

>>1095520
>Не подумайте, что я сопротивляюсь и линию свою гну, просто аргументы привожу в надежде к просветлению прийти
Какой же ты молодец.
И все же, раз struct и class - одна хуйня, просто пройдитесь автозаменой. struct <ClassName>{ -> class <ClassName>{public:
К чему спорить из-за того, что не имеет смысла?

Ответы95533

21 ноя, 15:10 #427 #1095533

>>1095532
И зачем это делать? Просто чтобы прогнуться перед рандом индусом с суевериями против POD struct? Наоборот же намерение лучше выражено в коде.

Ответы95534

21 ноя, 15:16 #428 #1095534

>>1095533
Он о вас ведь так же думает. И кому-то придется погнуться. У вас там нет традиции решать вопросы битвой?

21 ноя, 15:30 #429 #1095538

Не шарю в крестах, но даже мне очевидно что структуры нужны, например, для ffi. мимо

196 Кб, 1920x1080

21 ноя, 15:33 #430 #1095539

Вот что за хуита? А? Что за хуита?

Ответы9554095612

225 Кб, 1920x1080

21 ноя, 15:35 #431 #1095540

>>1095539
Прикрепить текст забыл.

Ответы955419554295556

21 ноя, 15:38 #432 #1095541

>>1095540

Кое-где минус на плюс надо поменять. мимо бегемотик

Ответы95543

21 ноя, 15:41 #433 #1095542

>>1095540
бля
for(i=0;i<n;i++)
if(myvector>myvector[i+1])
{}
Ну ты шо дядя

Ответы9554395544

21 ноя, 15:46 #434 #1095543

>>1095542
Спасибо.
>>1095541
Сука, спалил моих бегемотов.

21 ноя, 15:47 #435 #1095544

>>1095542
>>1095542
А что не так?

Ответы95545

21 ноя, 15:49 #436 #1095545

>>1095544
Оу. Ну в массиве Н элементов, а человек обращается к Н+1. А его нет как бы. Вот и вылетает аут оф рэндж

Ответы95547

21 ноя, 15:50 #437 #1095547

>>1095545
А, понял. Типо когда i = (число элементов) вылетает шайтан-буква.

Ответы95548

21 ноя, 15:51 #438 #1095548

>>1095547
Да. Потому что нумерация в плюсах с нуля начинается

Ответы95551

21 ноя, 15:55 #439 #1095549

Пацаны, я работал в программе с памятью и у меня комп полетел? Это взаимосвязано?

Ответы9555297573

21 ноя, 15:57 #440 #1095550

>>1095506
>Заботиться ли asio о разделении сокета самостоятельно, или это должен делать я?
Смотря в каком смысле. data race при одновременном доступе к сокету из разных потоков не будет.
А если тебе нужен определённый порядок отправки/чтения данных — для этого есть strand.

Ответы95613

215 Кб, 1920x1080

21 ноя, 15:59 #441 #1095551

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

Ответы95553

21 ноя, 15:59 #442 #1095552

>>1095549
Нет

21 ноя, 16:00 #443 #1095553

>>1095551
так а что ты исправил? обращение по индексу i+1 как было, так и есть.
Короче скинь сюда код просто, попробую помочь.

Ответы95554

21 ноя, 16:03 #444 #1095554

>>1095553
Я же сделал условие, что вызывается к i + 1, только если i != n.
https://ideone.com/vMYRWh

Ответы95557

21 ноя, 16:04 #445 #1095556

>>1095540
cin >> myVector
Ну хуйня же. У тебя нет i-го элемента, а ты в него что-то записываешь.

21 ноя, 16:07 #446 #1095557

>>1095554
Оно должно сортировать массив, я правильно понимаю?

Ответы95558

21 ноя, 16:07 #447 #1095558

>>1095557
Да, пузырьковым методом.

Ответы9555995562

21 ноя, 16:10 #448 #1095559

>>1095558
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int n;
cout << "Введите количество чисел в массиве: ";
cin >> n;
vector<int> myVector(n,0);
for (int i = 0; i < n; i++)
{
cout << "Введите число массив: ";
cin >> myVector;
}
while (true)
{
for (int i = 0; i < n-1; i++)
{
if (myVector > myVector[i + 1])
{
int value = myVector ;
myVector = myVector[i + 1];
myVector[i + 1] = value;
}
}
bool ifSorted = true;
for (int z = 0; z < n-1; z++)
{
if (myVector[z] > myVector[z + 1])
{
ifSorted = false;
}
}
if(ifSorted == true)
goto escape;
}
escape:
for (int i = 0; i < n; i++)
{
cout << myVector;
}
system("PAUSE");
return 0;
}

21 ноя, 16:10 #448 #1095559

>>1095558
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int n;
cout << "Введите количество чисел в массиве: ";
cin >> n;
vector<int> myVector(n,0);
for (int i = 0; i < n; i++)
{
cout << "Введите число массив: ";
cin >> myVector;
}
while (true)
{
for (int i = 0; i < n-1; i++)
{
if (myVector > myVector[i + 1])
{
int value = myVector ;
myVector = myVector[i + 1];
myVector[i + 1] = value;
}
}
bool ifSorted = true;
for (int z = 0; z < n-1; z++)
{
if (myVector[z] > myVector[z + 1])
{
ifSorted = false;
}
}
if(ifSorted == true)
goto escape;
}
escape:
for (int i = 0; i < n; i++)
{
cout << myVector;
}
system("PAUSE");
return 0;
}

Показать весь текст
Ответы9556195615

21 ноя, 16:11 #449 #1095561

>>1095559
Cпасибо! Два чаю тебе.

21 ноя, 16:11 #450 #1095562

>>1095558
Обосрался со вставкой. Может так увидишь: https://ideone.com/DP0FOh
Только это нихуя не пузырьковый метод, это какая-то срань.
Ты направильно свапал(перечитай свой кусок и подумай) и во второй цикле херню написал

21 ноя, 18:26 #451 #1095612

>>1095539
Там же написано: out of range

21 ноя, 18:28 #452 #1095613

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

21 ноя, 18:32 #453 #1095615

>>1095559
Можешь весь код, кроме ввода/вывода на std::sort(myVector.begin(), myVector.end()); заменить.
За одно и сложность с O(N^2) снизишь до (N*log(N))

21 ноя, 23:08 #454 #1095799

Есть ли жизнь на VS 2017?
VS15

Ответы9585395862

22 ноя, 00:26 #455 #1095853

>>1095799
Только на Clion.

22 ноя, 00:39 #456 #1095862

>>1095799
Да, конечно. Брат жив, батя щастлив, скоро последние мажорные фичи С++17 завезут.

Ответы95874

22 ноя, 01:05 #457 #1095871

Есть ли смысл пытаться куда-нибудь устроиться джуном в дс на неполную занятость 25-30 часов, ибо уник еще ? Или бросить эту гиблую затею и пойти дальше окунаться в божественный океан джабы

Ответы96233

22 ноя, 01:08 #458 #1095874

>>1095862
>мажорные фичи С++17
Что там такого мажорного? Сделали std::byte вместо unsigned char, как будто раньше нельзя было сделать typedef?

Ответы9595996020

22 ноя, 01:09 #459 #1095876

Смешно то, что наверняка std::byte это не встроенный тип, а тайпдеф внутри библиотеки. Нахуя?

Ответы96030

22 ноя, 10:04 #460 #1095959

>>1095874
constexpr if - вот, что я ждал, в общем то и все

22 ноя, 12:46 #461 #1096020

>>1095874
typedef не запретит арифметические операции.

22 ноя, 13:33 #462 #1096030

>>1095876
Да, пиздец смешно xDDDD
Катаюсь по полу, братиш

22 ноя, 13:50 #463 #1096034

По какому имени гуглить такой прием, когда с экземпляром класса мы работаем через специальный "типа-интерфейс" (экземпляр специально созданного класса)?

Ответы96043

22 ноя, 14:15 #464 #1096043

>>1096034
Адаптер, что ли?

22 ноя, 20:06 #465 #1096233

>>1095871

22 ноя, 20:23 #466 #1096249

>>1085579 (OP)
Почему не получается обработать исключение в списке инициализации конструктора?

https://ideone.com/Ab9BBi

Ответы96267

22 ноя, 21:04 #467 #1096267

>>1096249
Исключение ловится, но потом оно автоматически перебрасывается выше. http://eel.is/c++draft/except.handle#14
Такое исключение значит, что объект не будет создан, поэтому оно и перебрасывается. Если бы этого не происходило, то после, программа пыталась бы использовать не созданный объект.

23 ноя, 12:15 #468 #1096465

Читал книгу Ахо А.В., Хопкрофт Д., Ульман Дж.Д. Структуры данных и алгоритмы.
Возникло несколько вопросов,
1 Чем отличается абстрактный типа данных от класса? Класс это частный случай АТД?
2 Почему в С и во многих других языках индексация массивов начинается с 0, а не с 1, как в Паскале, Фортране итд. Ведь если она начинается с 1, то удобно задавать нулевой указатель, как 0
3 Что такое тип данных "курсор" и чем он отличается от указателя?
4 Если брать C++, например, то какие аналогичные структуры данных там есть 3м основным:
ячейка - переменная и массив,
запись - объединение,
а файл в плюсах это что?
Заранее спасибо

Ответы96469

23 ноя, 12:32 #469 #1096469

>>1096465
>
>1 Чем отличается абстрактный типа данных от класса?
У ADT операции внешние (свободные функции), у классов это методы.

Ответы96511

418 Кб, 1024x1794

23 ноя, 13:15 #470 #1096500

>>1085579 (OP)
Привет, погромисты!
Хочу вкатиться, для начала просто до уровня "я что-то в этом понимаю", а потом, быть может, и посерьезнее взяться за программирование, если хорошо пойдет.
Но вот вопрос - с какого языка начать? Думаю между JS и C++ как самыми ходовыми и распространенными, но сам решить не могу. Помогите с выбором, что ли. Какие плюсы, минусы, где используется и какие перспективы. С меня как обычно.

Ответы96501

23 ноя, 13:16 #471 #1096501

>>1096500
Начни с Хаскеля.

23 ноя, 13:26 #472 #1096511

>>1096469
Статический метод что ли, как в Джаве?

Ответы96515

23 ноя, 13:27 #473 #1096515

>>1096511
Свободные функции.

23 ноя, 13:48 #474 #1096531

Посоны, ньюфаг в треде.

Как конвертнуть из "12.5cm" в double(12.5) и string(cm)?

Ответы9655996560

23 ноя, 13:51 #475 #1096535

или еще лучше, без конвертации в "cm" сразу из std::cin определить что там cm или нет.

Ответы96560

23 ноя, 14:36 #476 #1096559

>>1096531
Гугли регулярные выражения.

23 ноя, 14:36 #477 #1096560

>>1096531
>>1096535
А все, std::cin умнее меня, если стоит std::cin>>double>>string, то при вводе 12.5cm, он записывает 12.5 в double и cm в string, охуеть.

23 ноя, 17:44 #478 #1096656

>>1085579 (OP)
Анон, помоги мне написать функцию, которая принимает число в виде строки и конвертирует его в произвольный тип T. Нужно, чтобы при ошибке конвертации функция бросала исключение bad_from_string, но я не знаю, как это сделать.

https://ideone.com/imtnao

Ответы96872

23 ноя, 20:35 #479 #1096760

>>1085579 (OP)
Посоветуйте для изучения несложную консольную программу, чтобы работала в несколько потоков (делающих разве задачи), которые бы между собой синхронизировались. Без Qt, лучше на Boost. Вообще, предлагаю хорошо написанные программы заносить в список, а список - в шапку.

23 ноя, 21:55 #480 #1096872

>>1096656
Просто перехватывай дефолтное и кидай свое, если я правильно понял
https://ideone.com/d6HEB2

289 Кб, 389x530

23 ноя, 22:50 #481 #1096896

>>1085579 (OP)
Пытаюсь написать MapReduce. https://ideone.com/jnlMj2

Почему компилятор ругается на вызов std::async?

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

Ответы97015

24 ноя, 01:24 #482 #1096985

Хочу сделать какое-то свое небольшое декстоп приложение для гитхаба на C++. Может кто-нибудь подсказать идею? Обязательно должна использоваться многопоточность. Есть примерно два месяца свободного времени.

24 ноя, 01:24 #483 #1096986

Хочу сделать какое-то свое небольшое декстоп приложение для гитхаба на C++. Может кто-нибудь подсказать идею? Обязательно должна использоваться многопоточность. Есть примерно два месяца свободного времени.

24 ноя, 02:53 #484 #1097015

>>1096896
>
>Почему компилятор ругается на вызов std::async?
Пот омуч то нужна функц ия, ане шаб лон функици

24 ноя, 16:41 #485 #1097233

72 Кб, 1000x563

6 Кб, 352x205

>>1085579 (OP)
Анон, какое корректное определение имеют шаблоны C++? Я видел два определения, претендующих на строгость:

1) Шаблон это проект или формула для создания классов или функций
2) Шаблон это семейство классов или функций, параметризуемое типами

Какое определение точное, правильное и непротиворечивое?

Ответы9724097241

24 ноя, 16:50 #486 #1097240

>>1097233
> какое корректное определение имеют шаблоны C++?
http://eel.is/c++draft/temp#1

>претендующих на строгость
В каком смысле?

Ответы97250

24 ноя, 16:51 #487 #1097241

>>1097233
> какое корректное определение имеют шаблоны C++?
Лучше так http://eel.is/c++draft/temp#def:template

24 ноя, 16:57 #488 #1097250

>>1097240
>В каком смысле?
Ну меня просто замучил один уебан, который требовал от меня строгие непротиворечивые определения на собеседовании.

Ответы97253

24 ноя, 16:59 #489 #1097253

>>1097250
Систему аксиом и правил вывода он тебе предоставил, чтобы ты мог проверить строгость и непротиворечивость им?

Ответы97573

24 ноя, 18:10 #490 #1097296

Мега тупой вопрос, но я встрял.
https://ideone.com/NvGAaO
Как пропустить пустую строку и читать дальше?

Ответы9729797299

24 ноя, 18:11 #491 #1097297

>>1097296
en.cppreference.com/w/cpp/io/basic_istream/ignore

24 ноя, 18:17 #492 #1097299

>>1097296
представь что ты ешь еду, макарошки там с сосисочкой. поел, и начал пить чай, а потом понял, что у тебя был кетчуп. ты берёшь шприц, заливаешь в него кетчуп, втыкаешь шприц себе в желудок и вводишь.
вот так же и у тебя: ты читаешь ввод пользователя в main и в последующих ветках кода, хотя можешь делать только один getline, парсить строку и дальше по распаршенным данным что-то делать.
поменяй это, и тогда легко сможешь решить проблему с пустой строкой.

Ответы97304

24 ноя, 18:24 #493 #1097304

>>1097299
Да, я так и делал сначала, просто думал. что можно как-то всё это без распарса сделать.
проиграл

24 ноя, 22:06 #494 #1097382

Аноны, застрял казалось бы на простой задачке по ООП.

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

1) Как использовать push_back и push_front одновременно?
2) Как реализовать коллекцию, чтобы я вводил целые числа и они выводились в коллекции?

Ответы97573

sage 24 ноя, 22:39 #495 #1097394

Ваше говно еще не сдохло?

Ответы97396

72 Кб, 1000x563

24 ноя, 22:52 #496 #1097396

>>1097394
Нет, ты еще жив и воняешь.

А вообще, какая существует замена C++ общего назначения? В продакшене одно говно с ВИРТУАЛЬНЫМИ МАШИНАМИ и огромным рантаймом. Или вовсе недоязычки, выполняющиеся в бравузере.

Ответы97398

sage 24 ноя, 22:57 #497 #1097398

>>1097396
C
Rust
Go
D
Java
Scala
Erlang
Elixir
Clojure
Haskell
Python

Любой из этих языков лучше в своей сфере, чем этот ебаный франкенштейн.

Ответы97415

24 ноя, 23:39 #498 #1097415

72 Кб, 1000x563

11 Кб, 585x355

>>1097398
Ну и катись отсюда в свой Го, говноед. В каком еще языке может такое функциональное метапрограммирование шаблонов в compile-time?

Ответы97417

sage 24 ноя, 23:44 #499 #1097417

>>1097415
Так нахуя это кому вообще надо в реальной жизни? Protip: никому.

Алсо, твои кривые шаблоны сразу выдают в тебе ньюфажика.

Ответы97420

72 Кб, 1000x563

24 ноя, 23:47 #500 #1097420

>>1097417
>Так нахуя это кому вообще надо в реальной жизни?
Нахуй кому нужна реальная жизнь?

>твои кривые шаблоны сразу выдают в тебе ньюфажика
Что с оими шаблонами не так?

Ответы9743097584

sage 25 ноя, 00:15 #501 #1097430

>>1097420
>Нахуй кому нужна реальная жизнь?
Ой маня маня..
Еще и аваторофаг.

72 Кб, 1000x563

25 ноя, 00:26 #502 #1097435

Почему компилятор вычисляет 46-е число Фибоначчи на порядки быстрее, чем это делает обычная рекурсивная функция?

Ответы97573

25 ноя, 00:35 #503 #1097444

Привет анон. решил почитать рекомендуемую в шапке книжку Страуструпа, но наткнулся на проблему, что в MINGW походу нет библиотеки std_lib_facilities.h. Какой тогда лучше скачать компилятор, чтоб при обучении не сталкиваться с проблемой отсутствия библиотек, используемых автором?

Ответы9744697573

25 ноя, 00:39 #504 #1097446

>>1097444
Лучше читай Липпмана.

Ответы97451

25 ноя, 00:49 #505 #1097451

>>1097446
А какую IDE с компилятором посоветуешь для 32-битной винды?

Ответы97459

72 Кб, 1000x563

25 ноя, 01:18 #506 #1097459

>>1097451
Очевидная студия 17 года или QtCreator.
Палю годноту https://stepik.org/course/7

25 ноя, 02:00 #507 #1097479

ну же
> Есть ли смысл пытаться куда-нибудь устроиться джуном в дс на неполную занятость 25-30 часов, ибо уник еще ? Или бросить эту гиблую затею и пойти дальше окунаться в божественный океан джабы

Ответы97573

25 ноя, 02:21 #508 #1097482

Планирую начать изучать мультиплеер в играх и отличное от http post get сетевое взаимодействие. С чего начать?

25 ноя, 03:07 #509 #1097498

>>1090510
https://ideone.com/XH1TMF
не?

25 ноя, 14:29 #510 #1097573

>>1095549
> JS
Браузерный фронтенд, скрипты, ГУЙ для плюсовых программ, куда там ещё пытаются впихнуть его.
> и C++
ОС, эмбеддед, высокопроизводительные программы, игры. Гуй тоже можно писать.
Отличия от JS: строгая типизация и строгое структурирование программы, стандарт соблюдается лучше, RAII вместо GC, многие вещи описываются более многословно, шаблончики могут вскрыть мозг.

В обоих случачаях твоей ступне не поздоровится. Язык нужно использовать тот, который используется в книге, которую ты читаешь. Начинать можешь с C.
>>1097253
THIS
>>1097382
>1) Как использовать push_back и push_front одновременно?
>в коллекции типа множество и мультимножество
В set и multiset есть только insert, ЧСХ. (multi)set - сортирующий контейнер. Ещё есть unordered_set.
>>1097382
>2) Как реализовать коллекцию
#include <set>
>они выводились в коллекции?
штоблядь
>>1097435
Бенчмарк в студию.
>>1097444
Прочти внимательно предисловие:
http://www.stroustrup.com/Programming/std_lib_facilities.h
Это не либа компилятора, блядь.
>>1097479
В мывамперезвонимтреде или ньюфаготреде спроси.

25 ноя, 14:29 #510 #1097573

>>1095549
> JS
Браузерный фронтенд, скрипты, ГУЙ для плюсовых программ, куда там ещё пытаются впихнуть его.
> и C++
ОС, эмбеддед, высокопроизводительные программы, игры. Гуй тоже можно писать.
Отличия от JS: строгая типизация и строгое структурирование программы, стандарт соблюдается лучше, RAII вместо GC, многие вещи описываются более многословно, шаблончики могут вскрыть мозг.

В обоих случачаях твоей ступне не поздоровится. Язык нужно использовать тот, который используется в книге, которую ты читаешь. Начинать можешь с C.
>>1097253
THIS
>>1097382
>1) Как использовать push_back и push_front одновременно?
>в коллекции типа множество и мультимножество
В set и multiset есть только insert, ЧСХ. (multi)set - сортирующий контейнер. Ещё есть unordered_set.
>>1097382
>2) Как реализовать коллекцию
#include <set>
>они выводились в коллекции?
штоблядь
>>1097435
Бенчмарк в студию.
>>1097444
Прочти внимательно предисловие:
http://www.stroustrup.com/Programming/std_lib_facilities.h
Это не либа компилятора, блядь.
>>1097479
В мывамперезвонимтреде или ньюфаготреде спроси.

Показать весь текст

25 ноя, 14:48 #511 #1097584

>>1097420
>Что с оими шаблонами не так?
Они для C++98

25 ноя, 16:02 #512 #1097610

Сап. Чё за хуйня такая?

#include <iostream>
#include <list>
#include <iterator>
#include <vector>

int main()
{
typedef std::vector<int> conteiner;
typedef conteiner::iterator itereter;
conteiner azaza={1,2,3,4,5};
auto it =azaza.end(); std::cout<< *it << std::endl;
return 0;
}

На cppreference как про std::vector::end(), так и про std::list::end() говорится, что "attempting to access it results in undefined behavior. "

Но код выше выводит:
%численная поебень%
5
А если заменить vector на list, выводит:
5
5

Разыменование std::list<int>::end() с полученим значения реального последнего элемента в листе - это баг или фича? Или это свойство моего конкретного конпелятора?

Ответы97653

25 ноя, 17:56 #513 #1097653

>>1097610
Это свойство undefined behaviour, блядь.

57 Кб, 1285x978

25 ноя, 18:17 #514 #1097657

Почему такая ересь скомпилировалась и нормально работает, это же ошибка, потому локальная переменная и в функции foo и bar должны уничтожиться по завершению функции, а я спокойно присваиваю несуществующую переменную другим переменным в main

https://pastebin.com/4L4hA6tb

Ответы97762

25 ноя, 22:04 #515 #1097762

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

Ответы9776697767

25 ноя, 22:06 #516 #1097766

>>1097762
а почему это работает?

Ответы97767

25 ноя, 22:06 #517 #1097767

>>1097766
>>1097762
>Это UB

25 ноя, 22:30 #518 #1097778

Анон, подскажи пожалуйста.
Моя цель - в процессе работы программы вывести данные объектов-детей(childFirstClass, childSecondClass, etc) одного класса(parentClass) в таблицу (а пока в дебаг).

Сейчас я пытаюсь это сделать следующим образом: В процессе работы в контейнер объявленный как
std::map <unsigned long, parentClass> storage;

записываются данные следующим образом
for (int i = 0; i < 99; i++) {
childFirstClass tb = new childFirstClass();
storage.insert(std::make_pair((unsigned long)storage.size(), tb));

qDebug() << tb->extract_readable_data(); // (1)
qDebug() << storage.at(i).extract_readable_data(); // (2)
}

Соответственно в выводе дебага я получаю в случае (1) правильные данные, вызывается версия функции принадлежащая объекту класса-ребёнка, а в случае (2) я получаю вызов функции класса-родителя.

Как мне сделать так чтобы и в случае (2) вызывалась функция класса-ребёнка?
Мне кажется, я иду вообще не верным путём. Какой путь верный?

extract_readable_data() выглядит так:

class parentClass
{
private:
public:
parentClass();
~parentClass();
virtual QString extract_readable_data() {
return QString("Data is unreadable: parent class");
};
};

class childFirstClass
{
private:
public:
childFirstClass();
~childFirstClass();
QString extract_readable_data() {
return QString("Successful read");
};
};

25 ноя, 22:30 #518 #1097778

Анон, подскажи пожалуйста.
Моя цель - в процессе работы программы вывести данные объектов-детей(childFirstClass, childSecondClass, etc) одного класса(parentClass) в таблицу (а пока в дебаг).

Сейчас я пытаюсь это сделать следующим образом: В процессе работы в контейнер объявленный как
std::map <unsigned long, parentClass> storage;

записываются данные следующим образом
for (int i = 0; i < 99; i++) {
childFirstClass tb = new childFirstClass();
storage.insert(std::make_pair((unsigned long)storage.size(), tb));

qDebug() << tb->extract_readable_data(); // (1)
qDebug() << storage.at(i).extract_readable_data(); // (2)
}

Соответственно в выводе дебага я получаю в случае (1) правильные данные, вызывается версия функции принадлежащая объекту класса-ребёнка, а в случае (2) я получаю вызов функции класса-родителя.

Как мне сделать так чтобы и в случае (2) вызывалась функция класса-ребёнка?
Мне кажется, я иду вообще не верным путём. Какой путь верный?

extract_readable_data() выглядит так:

class parentClass
{
private:
public:
parentClass();
~parentClass();
virtual QString extract_readable_data() {
return QString("Data is unreadable: parent class");
};
};

class childFirstClass
{
private:
public:
childFirstClass();
~childFirstClass();
QString extract_readable_data() {
return QString("Successful read");
};
};

Показать весь текст
Ответы9778097815

15 Кб, 1020x274

25 ноя, 22:33 #519 #1097780

>>1097778
Знаки указателей съела вакаба

ПЕРЕКАТ 25 ноя, 22:53 #520 #1097795

https://2ch.hk/pr/res/1077271.html (М)
https://2ch.hk/pr/res/1077271.html (М)
https://2ch.hk/pr/res/1077271.html (М)
https://2ch.hk/pr/res/1077271.html (М)
https://2ch.hk/pr/res/1077271.html (М)

Ответы97815

25 ноя, 23:19 #521 #1097815

>>1097795
Динахуй.
>>1097778
Самый надёжный и типобезопасный путь - сделать метод виртуальным. Оверхед незначителен, если только ты не вызываешь этот метод хуйзнаетсколько раз и ничего в этом методе не делаешь. В таком случае тебе лучше делать static_cast, но он нетипобезопасен (компилятор и рантайм не шлёпнут тебя по руке за приведение не к тому типу).

Ответы97973

26 ноя, 11:59 #522 #1097973

>>1097815
>сделать метод виртуальным
Ну я так и делаю, но явно косячу.

class parentClass
{
virtual QString extract_readable_data() {
return QString("Data is unreadable: parent class");
};

class childFirstClass : public parentClass
{
QString extract_readable_data() {
return QString("Successful read");
};

>static_cast
Тоже не подходит, потому что классов-детей может быть много и нужно как-то определять к какому классу-потомку делать статик_каст.

Возможно моя ошибка в
>std::map <unsigned long, parentClass> storage;
?
Какой есть лучший способ хранить объекты разных классов в одном контейнере? Шаблоны?

Ответы97988

26 ноя, 12:28 #523 #1097988

>>1097973
> но явно косячу.
У тебя правильно написано.
>Какой есть лучший способ хранить объекты разных классов в одном контейнере?
std::variant или std::shared_ptr
>Шаблоны?
штоблядь
>std::map <unsigned long, parentClass> storage;
>storage.insert(std::make_pair((unsigned long)storage.size(), tb));
Нахуй тебе std::vector с функциями std::map?

Ответы98044

26 ноя, 12:39 #524 #1097994

Точнее, это std::vector с функциями std::list или что это блядь вообще такое.

26 ноя, 13:49 #525 #1098044

>>1097988
>Нахуй тебе std::vector с функциями std::map?
Ну изначально планировалось, что unsigned long - будет уникальным айдишником объекта. Но потом я понял что пока уникальный айди не нужен, а если понадобится, то его лучше будет хранить внутри объекта.
>std::variant
То что нужно, спасибо!
Но сразу вопрос. А как его использовать если неизвестны имена будущих классов-детей?
Т.е., вот сейчас это будет
std::variant<parentClass, childFirstClass, childSecondClass> classesVariant;
Но если вдруг мне потребуется подгружать в программу новые классы и их объекты через плагины или какой-либо иной механизм подключения, то как расширить определение classesVariant для его восприятия объектов нового класса, чьё имя заранее неизвестно?

Ответы98348

26 ноя, 15:47 #526 #1098112

О, в MVS 2015 нельзя подключить <variant>.

Ответы98113

26 ноя, 15:51 #527 #1098113

>>1098112
Так что теперь у каждого класса будет свой вектор объектов класса, а ещё будет вектор указателей на векторы с объектами классов.
Проблема решена.

26 ноя, 17:19 #528 #1098160

Реализуйте функцию getline, которая считывает поток ввода посимвольно, пока не достигнет конца потока или не встретит символ переноса строки ('\n'), и возвращает C-style строку с прочитанными символами.

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

Память, возвращенная из функции будет освобождена оператором delete[]. Символ переноса строки ('\n') добавлять в строку не нужно, но не забудьте, что в конце C-style строки должен быть завершающий нулевой символ.

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

Почему моё решение выдаёт Wrong answer??

https://pastebin.com/chdNyG3g

char getline()
{
char c; // заводится переменная для хранения в ней введенного символа
char str = new char[1]; // выделяется память на динамический массив длиной в 1 элемент
size_t size = 1; // размер массива str

for (int i = 0; std::cin >> c && c != '\n'; ++i) { // до тех пор пока не будет введен символ перевода строки
str = c; //заносим введенный символ в последний элемент массива
char* tmp = new char[1+ size]; //выделяем память на массив длиной масиива length(str) + 1 элемент

for (int j = 0; j < size; ++j) { //копируем значения str в tmp
tmp[j] = str[j];
}
delete[]str; //удаляем данные по адресу str
str = tmp;//перенаправляем указатель str на область памяти, где записаны старые значения + 1 свободный элемент
size++; //увеличиваем размер элементов массива на 1
tmp = 0; //обнуляем указатель tmp
}
return str;
}

26 ноя, 17:19 #528 #1098160

Реализуйте функцию getline, которая считывает поток ввода посимвольно, пока не достигнет конца потока или не встретит символ переноса строки ('\n'), и возвращает C-style строку с прочитанными символами.

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

Память, возвращенная из функции будет освобождена оператором delete[]. Символ переноса строки ('\n') добавлять в строку не нужно, но не забудьте, что в конце C-style строки должен быть завершающий нулевой символ.

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

Почему моё решение выдаёт Wrong answer??

https://pastebin.com/chdNyG3g

char getline()
{
char c; // заводится переменная для хранения в ней введенного символа
char str = new char[1]; // выделяется память на динамический массив длиной в 1 элемент
size_t size = 1; // размер массива str

for (int i = 0; std::cin >> c && c != '\n'; ++i) { // до тех пор пока не будет введен символ перевода строки
str = c; //заносим введенный символ в последний элемент массива
char* tmp = new char[1+ size]; //выделяем память на массив длиной масиива length(str) + 1 элемент

for (int j = 0; j < size; ++j) { //копируем значения str в tmp
tmp[j] = str[j];
}
delete[]str; //удаляем данные по адресу str
str = tmp;//перенаправляем указатель str на область памяти, где записаны старые значения + 1 свободный элемент
size++; //увеличиваем размер элементов массива на 1
tmp = 0; //обнуляем указатель tmp
}
return str;
}

Показать весь текст
Ответы9833498348

26 ноя, 20:51 #529 #1098334

>>1098160
Реализовал тебе за счеку, проверяй

26 ноя, 21:13 #530 #1098348

>>1098044
Это статическая типизация без GC, здесь тру-полиморфизм без изместного наперёд дерева объектов только на указателях.
>>1098160
>char* tmp = new char[1+ size]; //выделяем память на массив длиной масиива length(str) + 1 элемент
У меня от этого брат умер! Нахуй выделять поштучно? Ууууу блядь у тебя там квадратичная сложность ниже в коде нахуй!
>Wrong answer??
Это "неправильный ответ" по-русски штоле?
>tmp = 0; //обнуляем указатель tmp
Нахуя.

Олсо, внимательно прочти задание.

44 Кб, 600x402

26 ноя, 22:26 #531 #1098412

ВАЖНЫЙ ВОПРОС
Есть что-нибудь типа джавадока для си++ и VS2015?
Ну, то-есть, я хочу, чтобы у меня для классов/функций/новых_файлов сразу создавался шаблонный коментарий.
То-есть:
1) Для новых файлов - это в начале коммент с лицензией, датой и именем.
2) Для функций - слот для описания функции и всех параметров/аутпута.
3) Для класса - просто слот для описания.

Чёт в гугле ничего толкового не пишут.

Ответы9844098500

26 ноя, 23:02 #532 #1098440

>>1098412
Добавлю.

Пробовал TripleSlashCpp, но он вообще не кастомизируемый, генерирует только комменты для функций/классов и в формате xml, что мне не очень нравится.
Лучше, чем ничего, конечно, но всё-равно довольно убогий.

27 ноя, 00:52 #533 #1098500

>>1098412
Doxygen

27 ноя, 09:25 #534 #1098586

Вопрос на засыпку, где выделяется память для строк в библиотеке <string> по новому стандарту целиком на стеке или в куче??

Ответы9861198619

27 ноя, 11:07 #535 #1098602

ньюфаг вкатился
Интересует разработка под VR и разработка десктоп приложений, подскажите как с этим справляется c++, есть ли вакансии и много ли их, рассматриваю не только Россию но и возможность фрилансить или вообще завестри трактор.
Слышал что плюсы не нужны и юзают только на заводах

27 ноя, 12:03 #536 #1098611

>>1098586
твой стек и есть куча, но не совсем

Ответы98628

27 ноя, 12:40 #537 #1098619

>>1098586
Память для самого объекта выделяется в зависимости от того, как ты его создал - на стеке или в куче. Объект выделяет хранилище с помощью аллокатора либо использует SSO - хранит строку прямо в себе. В новом стандарте ничего не поменялось.

127 Кб, 512x512

27 ноя, 13:02 #538 #1098628

>>1098611
>твой стек и есть куча,
последние стандарты C++ определяют, что строки должны поддерживать оптимизацию коротких строк (small string optimization, SSO), которые располагаются на стеке целиком. Строки подлиннее всё так же живут в куче. Стек не такой большой, чтобы складывать на него данные произвольной длины.

Ответы98772988229886598993

27 ноя, 16:42 #539 #1098772

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

Ответы98865

27 ноя, 17:00 #540 #1098790

Хочу поменять местами две bucket в unordered_multimap.
Ну допустим был std::unordered_multimap azaz={1,2,3,4,3,2,1}, который при выводе for (auto&& i : azaz){std::cout << i;} давал:
3311224, а хочется поменять местами bucket'ы с тройками и единицами, чтобы выводилось 1133224.

Такое возможно?

Ответы98792

27 ноя, 17:00 #541 #1098792

>>1098790
Нет.

27 ноя, 17:36 #542 #1098822

>>1098628
ты с пуфон-тредом не перепутал ли, скажи еще, что они из хэш-таблицы достаются

27 ноя, 18:03 #543 #1098865

>>1098628
>>1098772
Впрочем, я не так прочитал. Сначала прочитал как "строки должны реализовывать SSO", а не позволять её.

27 ноя, 19:53 #544 #1098993

>>1098628
>которые располагаются на стеке целиком
Перестаньте путать место хранения объекта и стек.
auto huy=new string;
Где хранится *huy?

27 ноя, 21:48 #545 #1099143

>>1085579 (OP)
ПЕРЕКАТ
https://2ch.hk/pr/res/1099142.html (М)
https://2ch.hk/pr/res/1099142.html (М)
https://2ch.hk/pr/res/1099142.html (М)
https://2ch.hk/pr/res/1099142.html (М)
https://2ch.hk/pr/res/1099142.html (М)

Тред утонул или удален.
Это копия, сохраненная 17 декабря 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion