Это копия, сохраненная 16 июля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Отрекшийся от славы и мечты,
Но для меня непоправимо милый,
И чем тяжелее твой стандарт,
Тем милее мне ты.
Ты фичи новые, поглощаешь, как вино,
Что наяву, не знаешь, что во сне,
Но зелены крестовые твои очи,
Покоя, видно, не нашел в них ты.
И сердце только скорой смерти просит,
Кляня медлительность обновления стандарта.
Всё чаще ветер хипстерский приносит
Те упрёки в легаси, да о смерти те мольбы.
Но разве я к тебе вернуться смею?
Под нежным небом виртуалки
Я только только аллоцировать умею,
И без сборщика мне уже никак.
Так дни идут, печали умножая.
Как за тебя мне Господа молить?
Ты угадал: моя любовь такая,
Что даже ты не смог ее убить.
Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый >>1001370 (OP)
Теги: кресты, cpp
subroutine delete_foo_c(foo) bind(C, name="delete_foo")
или
auto compose(T a, E b) -> decltype(a+b)
Почему я уже три года учу С++, а все это дерьмо выглядит для меня как магия? Как мне учить язык правильно, чтобы понимать все это?
Первая строка явно не из чистых крестов.
Во второй строке тип возвращаемой переменной функции определяется как тип объекта "a+b"
Прочитал в книге, что можно обратиться к global scope через оператор области видимости. Решил это опробовать на своем примере, с тем условием, что я создал еще одну область видимости в main(). Собственно вот код https://pastebin.com/WqP4CbTs и я хочу вывести переменную f, которую определил в начале.
Понятно. В гугле сказали, что к этой переменной нельзя получить доступ.
https://stackoverflow.com/questions/5187891/accessing-variables-with-the-same-name-at-different-scopes
разбирайся с темплейтами если хочешь понимать "магию"
на самом деле, темплейты в крестах позволяют обойтись без сишной магии сделаной на макросах и void* что такая же непонятная профану вещь
Массив в main запилил, в функцию передал, там создал новый массив и вернул его в main, но по-моему это как-то не так делается. Помогите нормальный код написать, плиз.
Забыл добавить, что нужно это сделать без готовых функций, самому.
А куда идти лабодаунам ньюфаням, которые не могут простые упражнения из книжки осилить? inb4 работать в макдак
хэдэры копипастятся в юниты. если бы эти функции были в хэдэрах, то ошибка multiple definition была бы оправдана, так как описанная сущность описывалась бы еще по нескольку раз в других юнитах.
в моем случае есть две разные сущности в двух разных, непересекающихся юнитах, просто с одинаковыми сигнатурами. если я вызываю abc(2) из a.cpp, я никаким образом не могу иметь в виду abc(int i) из b.cpp.
такова моя логика, по крайней мере.
Бузина кстати лекарственное растение, полезное, вот дядька-то здоровый и разъезжает по всему миру, в Киев заглянул. Все логично же. Не было бы бузины - дядька бы заболел и лежал дома или в местной больнице.
В коде скорее всего будет такое использование:
*field[x][y]=9;//например
setThisFieldIfWhatever(field[x][y]);
В коде (теперь посмотрел в код):
if(field[x][y]->HasBomb())
>>1006142
Что ты пишешь-то блядь? Нельзя получтиь доступ к несуществующей переменной?
http://ideone.com/0XmGZz
>>1006187
Работать в макдак.А если учишься, то дёргать препода.
>>1006203
Читай о раздельной компиляции.
>если я вызываю abc(2) из a.cpp
И тут ты, такой, показываешь код, в котором ты вызываешь функцию из cpp-файла.
Ты переопределил f в локальной области видимости, из предыдущей ты ее не достанешь. Другое дело, что если бы переменная была в анонимном пространстве имен или указана в ГЛОБАЛЬНОЙ области видимости, тогда доступ к ней можно было бы получить через ::f
Потому что допускается ручное управление памятью.
>И тут ты, такой, показываешь код, в котором ты вызываешь функцию из cpp-файла.
что блядь? ты ебанутый?
//a.cpp
void abc(int i)
{
//
}
void ClassA::callabc()
{
abc(2);
}
Манька считает, что если функция заявлена в заголовке, но определена в другом файле, то она принадлежит этому файлу?
Читай про раздельную компиляцию. Это я любя.
>Манька считает, что если функция заявлена в заголовке, но определена в другом файле, то она принадлежит этому файлу?
ты реально шизик какой-то
>хэдэры копипастятся в юниты. если бы эти функции были в хэдэрах, то ошибка multiple definition была бы оправдана, так как описанная сущность описывалась бы еще по нескольку раз в других юнитах.
Ещё раз: линкеру глубоко фиолетово, скопипастились ли функции из хедера или ты их сам скопипастил.
уже понял, спасибо
Если ты считаешь, что функция объявленная в CPP-файле принадлежит этому файлу, то как по-твоему к этой функции получает доступ другой код, который этот ЦПП-файл не инклудит? Ебанат.
И что в первую очередь всё идёт по старинке через листинги, встраивания одного в другой и прочих подобных текстовых штук.
Анонимные пространства имен ввели именно для того, чтобы в каждом юните трансляции, использующем его, было свое уникальное определение того же члена, например. Когда ты объявляешь и определяешь функцию в исходном файле, тебе будет только казаться, что объявление функции существует только в глобальной области видимости текущего сорца, на самом деле, функция будет иметь статическую линковку и, объявив еще одну такую же функцию с такой же семантикой ты словишь ошибку компиляции, поскольку будет существовать два одинаковых объявления, но разных в своей сущности. А почему, а потому что линковка СТАТИЧЕСКАЯ!
Если бы ты использовал анонимное пространство имен и в нем объявлял функции, скажем, в каждом юните трансляции у них, не смотря на одинаковую семантику, были бы разные имена.
Думаю, тебе стоит почитать вот это http://en.cppreference.com/w/cpp/language/storage_duration (стандарт читать не советую, во всяком случае, в начале, потому что объебешься и не раз!)
Не статическое, а внешнюю линковку, конечно же. Совсем заебался.
Нахуя ему тогда тред нужен будет?
Олсо, мутили уже канал, в слаке правда. Загнулся, насколько я помню.
спасибо, пофиксил.
> куда ты вносишь нужные данные
В каком виде? Уравнение текстом? Параметрическое, система уравнений?
Достаточно сложно, если не шаришь в деревьях и численных методах. К тому же уравнения такие бывают, что конкретный численный метод вообще неприменим в каком-то случае и потому он будет выдавать полную чушь. Чтоб учесть все разновидности это можно сотни часов разрабатывать.
А если у тебя что-то вида tg(x)=x^2, то если функцию в код вбивать или изолентой примотать какое-нибудь lua чтоб через диалоговое окно, то работы минут на 40. Ну и да, с таким подходом всегда можно будет специально подобрать такое уравнение, что программа пропустит какое-то решение (или будет жутко долго работать).
Конечный автомат гугли.
Я очередной вкатывающийся в плюсы и пришёл за советом по книге. И тут меня отправляет читать шапку я её прочёл
Собственно запрос на этот раз, наверное, специфичный. Плюсы для меня станут 3-им языком. Ничего серьёзного не планирую хотя как знать, на этот раз хочу изучить просто для себя.
Собственно суть запроса - ищу книгу, да покороче. Так, шоб поменьше воды и распинаний о полиморфизме.
Например, в Питоне есть книга "Укус питона", всего на 150 страниц, которая плавно и мягко вводит в синтаксис и конструкции языка. Ищу нечто похожее.
Ты на 20 лет опоздал.
В тех областях, где пишут на C++, как раз наоборот запутывают всё, что только можно, чтобы вытянуть из вояк и мусаров хоть сколько-то денег, «пока не сократили».
И не только в этой стране.
На нарах.
В крестах стоит шишка на мощные шаблоны (на них можно написать даже твою мамку), обилие библиотек. Напрягает больше всего отсутствие единой системы сборки и стандартного менеджера пакетов. Захочешь подключить либу к проекту - начинается ебля, а если еще и надо собрать под несколько платформ, то вообще вешайся.
В расте всё тоже 10 из 10, cargo рулит, менеджер пакетов, единая система сборки, юнит тесты из коробки. Сам язык тоже неплохой, то, что на расте можно выразить match'ем из 5 строчек в С++ превращается в switch из 20-30.
Что в итоге выбрать? Оба языка офигенные, но надо выбрать один.
Оберни в неймспейсы или классы и будет тебе счастье
С т.з. языка по сути нет разницы, в каком файле что. Получается, что всё как бы собирается в один мегалистинг. Разделение нужно для удобства и для компиля (ему чтобы дважды не компилить одно и то же)
Честно говоря, иногда складывается мнение, что плюса выучить практически не реально. Говорят, что за 5 лет упорного фигачинья на них доростаешь до джуна. Я начинал разбирать его по Ишковой, потом Павловская как справочник. М.б. не лучший вариант, но в местных книжных ничего лучше не было. В принципе, Ишковой для уровня "пописать лабы в универе" вполне хватает.
C++ перестаёт быть языком общего назначения, понемногу теряет ниши. Поэтому никто не горит желанием заменить этот язык на что-то современное. Можно сказать, что кресты ещё будут долго жить как легаси-говно (формошлёпство на VCL aka C++ Builder, MFC, Qt) или как основной язык для высокопроизводительных приложений и прочей подобной мишуры.
А насколько солнечное будущее у раста, я не могу сказать.
>Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
>Параллельное программирование на C++ в действии
>C++. Стандартная библиотека
Ссылочки то сгнили на дропбоксе. А жаль.
Там в самом верху написано где их искать.
А вообще, что за ебланы заливают для публичного доступа файлы на дропбокс?
под "теоретическим смыслом" следует понимать даст ли тебе изучение с++ какие то новые знания о языках программирования и о cs в общем?
нет конечно
лучше уж rsharp поиграйся, он из ml-семейства
о да, что только не выбирают, лишь бы не читать книги самого страуструпа
после 10ти лет изучения крестов ты хоть сможешь устроится тыщ на 20 в провинции ну или на 60 в дс
с растом этого же никогда не произойдет, ты здохнешь от голода
выбирай
Как хочешь. Обычно присущее всем наследникам описывается в конструкторе абстрактного.
"Абстрактный класс" - это, по-стандарту, класс, который может быть использован, как базовый. То есть, в нём не определён хотя бы один метод, например. Вопрос не имеет смысла.
Конструктор будет дефолтный, если кто-то захочет использовать твой класс, как базу. Устраивает тебя это или нет - решать тебе.
Вы че там, поехали?
Ну а если ты объявишь конструктор, но не определишь его, то этим придётся заниматься тому, кто твой код будет использовать.
Та это в коллегии наркоманы сидят, идей не было, а у буста выкатили всякие умные/общие указатели. Ну они и сказали "малаца хорошо сделали" и появился у сиплусплус свой GC
Как блять можно объявить и не реализовать не виртуальный метод?
Тот, кто его будет использовать, это как? Тот, кто возъмет этот былокод анона и допишет его до компилируемого состояния? Это тут имеется ввиду?
Это самое ебаннутое и не нужное добавление (вернее - нужное, но блять не таким ебанутым способом).
Чо за хуйню ты пишешь?
struct A {};
Это чо, абстрактный класс? Запросто могу сделать его базовым, хоть для ABC класса.
Абстрактный класс - класс с хотя бы одним pure virtual методом.
Достаточное определение. Базовый он там, или нет - дело третье.
Сидели мы и пилили кучу полиморфных классов.
Но с лямдами! Шаблонный полиморфизм! Мы угарели по Александреску!
Начали биндить, лямбды заворачивать в лямбды.
Казалось, еще чуть-чуть, и наш фреймворк станет походить на интерпретатор питона.
Эй, пшш..
Крестовики. У меня есть вопросы к вам.
Скажите мне, что такое лямбда с точки зрения компилятора? (что это автоматически генерируемый функтор - рассказывать не надо)
А вот, как она создается, на стеке или нет, статическая?
Что будет с переменными области захвата если я уничтожу контекст ее объявления (созания)?
>Как блять можно объявить и не реализовать не виртуальный метод?
Почему виртуальный? Любой.
http://ideone.com/DUCdRA
http://ideone.com/eg26Q0
Виртуальный/невиртуальный - без разницы.
>>1007631
Иди нахуй. Мой пост содержит ошибку, которую ты мог исправить, вместо этого ты хуйню написал.
>>1007638
Про generic lambda спроси тоже.
Generic lambda - это отличный показательный пример переизобретенных костылей в плюсах.
PS
Я про декларацию метода хуйпизда который, мало того, нигде не используется, так его нигде использовать далее и не удастся. Накой хуй какому-то разработчику далее использовать этот класс, по сути расписывая его реализацию? НАХУЯ?
Нахуй вообще нужны сорцы, если я могу послат тебя читать стандарт?
>>1007647
Это было бы так, если бы можно было бы иметь шаблоны в локальных классах. Но так, как нельзя, то генерик лямбды вместо них.
Сам реши.
Изврат какой-то.
Использование не POD-ов в качестве вложенных типов - моветон и фу-фу так делать.
Ты задаёшь очень специфичные вопросы, которые крестовикам нахуй не уперлись с точки зрения гипотетического обсуждения. Когда реально понадобится узнать, во что компилируется лямба - я расчехлю ollydbg чтоб найти VA кода, в котором вызывается лямбда, а в IDA посмотрю ассемблерный листинг. Но смотреть это специально мне, естественно лень и не представляет ценности на данный момент.
А тоже. Переход по вектору прерывания.
Ваш ход, коллега хотя я не знаю там, кто ты, может ты и не коллега, но будем считать что коллега
Мне скучно.
Давайте похаливарим от души.
Никогда не слышал про такие тупые запреты.
Если decltype может приводить к трудночитаемой лапше и иногда лучше запретить своим макакам тыкать в это палочкой, то про auto — совсем дикость.
C++ может сувать в С, но не наоборот. Как человеки и человечицы карочи.
В каких?
Нет, я больше про карьеру. В смысле, если я параллельно буду задрачивать плюсы, то смогу ли уйти на более элитную (и сложную, вероятно) работку с перекатом на плюсы, или оно того не стоит? На уровне необходимых знаний для каждого спеца я их и так знаю.
Ну ты определённо получишь какие-то знания, которые могут пригодиться в других сферах.
Дак хрен бы с ними со вложенными типами. Я, например, хочу тимлит-функцию в функции определить. Что мне делать? Я бы сделал тимплит-функтор, а вот хуй.
>>1007663
Хочу безопасное с какой-либо точки зрения подмножество C++, твои предложения?
>>1007672
Потому что легаси-компиляторы поддерживать надо, МБ.
>>1007675
В стандарте С++ есть ссылка на библиотеку C, например. В C++ нельзя делать безразмерный массив в конце структуры, например. Есть другие мелкие различия, но в коде С зачастую просто не нужен последний стандарт, поэтому несоответствия непринципиальны.
Для лямбд и замыканий нужен сборщик мусора, иначе всегда будет хуита.
>> Скажите мне, что такое лямбда с точки зрения компилятора
Грубо говоря, стандарт определяет лямбда-функцию как класс с определенным operator(), как std::function, например. Только вот std::function компонуется во время выполнения со всеми вытекающими (динамическое выделение памяти для захватываемых объектов, если встроенной памяти не хватает и т.д.), в то время как лямбда уже генерируется компилятором в соответствии со списком захвата и прочим, прочим (не стоит забывать, что в c++14 лямбда может иметь в качестве аргументов автоматически выводимые типы)
>> А вот, как она создается, на стеке или нет, статическая?
У нее статическое время жизни, скорее всего, точно тут не скажу. Ты можешь попробовать передать лямбду с некопируемым членом в списке захвата:
>> std::unique_ptr<A> aPtr;
>> auto lambda = [ptr = std::move(aPtr)] () { ... };
Попробуй ее завернуть в std::function и увидишь, как компилятор тебя напинает, потому что будет вызван копирующий конструктор, можно попробовать с std::move замутить передачу, но мне лень.
>> Что будет с переменными области захвата если я уничтожу контекст ее объявления (созания)?
Смотря как ты их передал, если по значению, нихуя не будет, если по ссылке - объебешься, потому что захватить она именно ссылки.
https://ideone.com/TXCq4E
код должен выполняться или должен в дедлоке быть?
Чёт читаю доки OMP и не могу понять. И ко всему этому во всех свежих компиляторах этот код нормально выводит строку. А в продакшене на GCC 4.9.2 при входе во вторую critical section зависает. Будто обе CS для него одно и то же.
Т.е. не оптимизации, а уменьшения объёма скомпилированного файла
Да.
Не шарю в OpenMP, предлагаю открыть баглист GCC и искать сооотв. баги на 4.9.2
Походу нашёл уже.
> Все неименованные критические секции условно ассоциируются с одним и тем же именем. Все критические секции, имеющие одно и тоже имя, рассматриваются единой секцией, даже если находятся в разных параллельных областях. Побочные входы и выходы из критической секции запрещены.
http://edu.chpc.ru/parallel/mainse5.html
Нет. Если они не статические.
> Может ли компилятор в целях оптимизации выпиливать неиспользуемые функции?
Да. Изи доказывается экспериментально
Интересует использование конструктора ostringstream ret(t) против использования оператора вывода с предварительным объявлением переменной и тратой лишней строки ostringstream ret; ret << t;
Какие подводные камни?
Погоди полгодика, дойду до нее - вместе решим.
Для чего функция inline auto scoped объявлена inline? Насколько часто надо объявлять функции встраиваемыми и когда это надо делать?
>Интересует использование конструктора ostringstream ret(t)
Где ты увидел конструктор для произвольного типа T?
http://en.cppreference.com/w/cpp/io/basic_ostringstream/basic_ostringstream
Перестраховка, наверное. Темплейты функций inline по-умолчанию.
P.S. inline не имеет никакого отношения к встраиваемости; inline относится к one definition rule. inline для оптимизации — это было 40 лет назад.
Где можно почитать, как GDB коннектится с сервером? Стоит задача написать сервер, который мог бы что-то отправлять GDB и получать ответ.
Раньше подразумевалось "inline-тело", теперь "inline-определение". В С++14 inline был зарезервирован, в С++14 писать inline нельзя.
А теперь вопрос: как платформо-независимо получить дату, используя лишь стандартную библиотеку?
Спасибо за попытку, анончик, но серьезно, что б у тебя часы дома секунды с начала 1970 года отсчитывали. И более того "Portable programs should not use the value returned by this function directly, but always rely on calls to other elements of the standard library to translate them to portable types (such as localtime, gmtime or difftime)." Иными словами time() как раз и приводит нас к localtime()
http://www.cplusplus.com/reference/ctime/localtime/
http://en.cppreference.com/w/c/chrono/localtime
Ну оба способа должны работать. localtime_s - это функция из C11, нужно подключать time.h вместо ctime (как я понял, сам-то не проверял нифига). В современном стандарте C++ localtime_s не существует.
По поводу ввода функции, можно понаделать лямбд, им сопоставить текстовое название функции и потом из них собирать уравнение. Сам так сделал. Батя грит малаца
> В С++14 inline был зарезервирован, в С++14 писать inline нельзя.
Ты что несёшь, поехавший?
>>inline относится к one definition rule
>Объясни подробнее. При чем тут inline?
При том, что ODR не распространяется на inline функции и (начиная с C++17) переменные.
time.h и так подключен. Там все проблемы с устареванием.
VS2017 жалуется, что "This function or variable may be unsafe" на localtime и предлагает использовать localtime_s.
GCC7.1.0 жалуется, что "there are no arguments to ‘localtime_s’ that depend on a template parameter, so a declaration of ‘localtime_s’ must be available" и говорит, что за -fpermissive готов мне это простить.
Я уж думаю сдаться, да попробовать Boost.date_time, все равно он у меня к проекту подключен. Но все же хочется-то стандартными методами!
>А dump_tree.cpp что такое?
Это файл с кодом. Его содержимое в самом начале скриншота выведено.
>FORCEINLINE
Очевидно, это дефайн, который зависит от текущего уровня оптимизаций. Сделай чтоб не зависел.
Тоже самое
Самый тупой вариант:
http://coliru.stacked-crooked.com/
ideone.com
Пошукай xda-developers и прочие сайты, наверняка на андроиде уже можно компилять, лишь бы текстовый терминал был (для запуска компилятора)
ну так то сеньоры, а то ты
Поговори с мамкой, на копеечное устройство она чаще всего денег даст, это не смартфон.
Иди утопись в деревенском сральнике нахуй, дегенерат. Ненавижу таких долбоебов, блять, элементарного синтаксиса не знают, и ведь даже в голову им не придет, что можно открыть справочник или учебник и понять, что ты кусок высерка с лишней хромосомой. Нет блять, пойду спрашивать у анона, сам не понимая, что я делаю. Уебище блять, сдохни, тупой кусок поноса.
Ты же не в квадрат синус возвел, аутист, мать ебал с отцом
схоронил
я прекрасно понимаю что делаю
возможно ли сделать глобальную переменную и редактировать её так чтобы все изменения сохранялись в ней же?
volatile не имеет отношения к сохранению изменений в переменной, он имеет отношению к чтению переменной.
А что тебе нужно? Чтобы 2 потока одновременно писали, так нельзя. Для синхронизации используй мьютексы/семафоры.
Ты не с ориджинал постером разговариваешь. Я тоже не знаю, что ему нужно.
Строку распарсить встроенными регексами, потом
http://en.cppreference.com/w/cpp/chrono/c/mktime
http://en.cppreference.com/w/cpp/chrono/c/tm
Что ты будешь делать с часами и минутами, если известен только день - твоё дело.
И вообще, пусть возвращает в чём-то другом.
Или подскажите, как самому написать обертку, удовлетворяющую следующим приблизительным требованиям:
1) Одно расшаренное соединение с БД как при использовании синглтона или указателя с кастомным удалятором
2) Возможность извлекать как строку таблицы, так и несколько строк
3) Удобное преобразование в требуемые типы данных
Как написать такие классы? В каких структурах данных хранить извлеченные данные?
Недолго порыскав по вкладке "Создать проект" наткнулся на проект, использующий конструктор XAML. Это то, что ныне используется? Извините за глупые вопросы,спасибо.
если вкратце то с orm в крестах все традиционно хуево
GUI на крестах давно переехал на Qt
Ебошить я буду, не волнуйся, вопрос скорее о вашем мнении по всяким конструкторам окошек. С Windows Frames то я справлюсь, интересно, что думают продвинутые программисты по всему этому делу и в чем они сами работают.
Винформы - это чистый .NET и следовательно C#, кресты там прикручены костылями.
На крестах гуйню пишут с помощью Qt и wxWidgets.
Если да, подскажите с чего стоит начать, может есть какие-нибудь опенсорсные библиотеки?
Молодец, ищи дальше.
фронт энд в любом случае должен быть сделан под винду.
Суть в том, что пакет совмещается со списком аргументов жадным образом - на список аргументов натягивается столько элементов пакета, сколько можно. Как этим воспользоваться: нужно задать аргумент, на который может налезть член пакета + пакет, и задать заземляющую функцию, у которой аргументов нет.
смотри не продешеви
>не волнуйся
нет, я, блядь, поволнуюсь
когда нулевое говно берут "на работу" а я тут от голода подыхаю
Быть хикки-НИИТом мне не привыкать, а вот для таких как ты это потрясение. Соси хуй, быдло. И работай как все за 15к.
Можно ли сделать метод(или функцию) в методе класса? Или вызвать функцию в методе класса.
Ну грубо говоря. Сделал класс "плита". В нем метод "взять геометрию". В методе берутся длина, ширина, толщина. Чтобы в мейне ввести длину, ширину и толщину я могу как-то вызвать метод и ввести только длину или ширину или толщину? Или я должен на каждую величину сделать свой метод?
Пишу как мудак, прошу не обоссывать.
Описать - нет такое можно делать в интерпретируемых языках или языках на C#. Вызвать в методе класса - да. Передавать параметры в метод класса можешь, да.
То есть делать ввод величин не в мейне, а в методе сразу?
А такая запись считается нормальной? Ну в смысле никто не скажет посмотрев на код:"Вот мудак, кто ж так пишет?!"
Я тоби нихуя не понимаю. делаешь такой
Class A
{
public:
double getArea(double w, double h){return wh;}
}
и потом в int main {
A a;
double _w, _h;
cin>>_w >> _h;
cout<<"area = "<<A.getArea(_w, _h)<<endl;
ну или можешь
class A{
private:
double w, h;
public:
double getArea(){ return this->wthis->h;}
A(double _w, double _h)
{
this->w=_w; this->h=_h;
}
}
int main(){
double x,y;
cin>>x>>y;
A a(x,y);
cout<<"area = "<<a.getArea()<<endl;
}
Я тоби нихуя не понимаю. делаешь такой
Class A
{
public:
double getArea(double w, double h){return wh;}
}
и потом в int main {
A a;
double _w, _h;
cin>>_w >> _h;
cout<<"area = "<<A.getArea(_w, _h)<<endl;
ну или можешь
class A{
private:
double w, h;
public:
double getArea(){ return this->wthis->h;}
A(double _w, double _h)
{
this->w=_w; this->h=_h;
}
}
int main(){
double x,y;
cin>>x>>y;
A a(x,y);
cout<<"area = "<<a.getArea()<<endl;
}
ой, епт твою мать. Разметка скушала звездочки как знак умножения. Вечно про это забываю. Надеюсь, суть ты понял.
Да, понял. Спасибо!
Вот у меня есть структура в классе, которая нигде кроме него не используется. При добавлении в vector как снизу там будет неявный конструктор копирования? А при использовании как справа?
А если в такой структуре в конструкторе я выделяю память чем new/delete, то мне вот при таких передачах как аргумента надо заботится о этих выделениях памяти больше обычного, или оно там само правильным образом вызовет все деструкторы для созданных копий?
Если тебя так смущают внутренние классы, то может, не стоит тебе их использовать? Сделал бы в этом же файле в анонимном неймспейсе и не парился.
Переопредели нужные конструкторы и проверь, хули ты тут мозга ебёшь.
Есть класс MyString, который ссылается на
Есть вспомогательный класс Counter, который является "оберткой" для строки и содержит вспомогательные данные, которые в частности позволят избежать дублирования данных. Он реализован в виде односвязного списка и являет собой статические данные.
Как отсортировать этот список, что бы строчки были в алфавитном порядке
я сортирую пузырьком и меняю местами сами данные, при этом не трогая саму структуру списка, но возникает проблема, что данные меняются, а члены класса MyString продолжают указывать на те же самые элементы списка Counter, а это неверно, потому что данные то поменялись
не могу придумать как решить эту проблему
https://pastebin.com/jG4cAk9Y
свапай поинтеры, а не данные
Используй фрейморки типа QT
for(begin++!=end)
for_each(begin,end, lambda)
for(auto el : smthWithBeginAndEnd)
Сейчас использую первый и третий по ситуации, приоритет у последнего.
Возникает вопрос: имеет ли смысл использовать for_each? Могу вкатиться в лямбды, но пока особо этим не занимаюсь, потому как код в целом прост и чист, да и for_each с нехилым блоком исполнения визуально ни разу не красивее обычного for с итераторами.
Может там какие-то оптимизации, мне неизвестные?
Просветите.
cpp.sh/942fc
Оно у тебя бесконечное и тупое.
И с инициализацией массива что-нибудь сделай, это тебе не пых и не жабоскрипт, ёпта!
wxWidgets, для уродливых рюшек — GTK/Qt.
Если готов сам с нуля всё делать и чтобы красиво бегало на видухе — SFML.
Качаешь, компилишь, линкуешь, вкатываешься в маны.
char* arr = char[10].
Тогда в arr[0]...arr[9] - место под символы. А где хранится сам размер массива?
Наверное ты имеешь ввиду char* arr = new char[10]; Нигде не хранится.
https://2ch.hk/po/res/23263797.html (М)
Наблюдается ли сейчас работающая бедность?
Человек new пропустил, не придирайся
За что ты его проткнул?
for(auto & el : smthWithBeginAndEnd)
?
попутно вопрос: как правильно обходить контейнер с unique_ptr, когда нужно одновременно с двумя и более элементами из этого контейнера работать?
{
//код метода
}
Какую роль здесь играет throw()?
>for(auto & el : smthWithBeginAndEnd)
Не этим. Специфическая задача требует специфического решения.
>>1010854
http://en.cppreference.com/w/cpp/language/except_spec
Написана специализация для сишных строк, но эта специализация шаблона не компилируется. Что я сделал не так? Значение ведь в общем случае надо передавать по ссылке, а для удобства передачи литералов типа числа 4, а не переменной со значением 4, надо использовать универсальные ссылки.
Но ведь ссылки универсальная и может принимать как lvalue, так ии rvalue. Объясни подробнее, в чем здесь проблема.
У тебя ссылка на указатель, которая в свою очередь является lvalue-ссылкой. lvalue ссылки не кастуются в rvalue ссылки.
https://ideone.com/uq6PZA
https://habrahabr.ru/post/226229/
>У тебя ссылка на указатель, которая в свою очередь является lvalue-ссылкой
Ты имеешь в виду, что параметр функции, объявленный как rvalue-ссылка, сам является lvalue-ссылкой? Где именно происходит каст rvalue в lvalue?
Последнюю строку в main поменял.
>который получает SQL-запросы
А ещё он получает DELETE FROM user WHERE 1>0;
>Что мне почитать для реализации такой задачи?
Погугли prepared statements
>как возвращать результат их выполнения
Да как угодно возвращай, всё равно работать не будет LOL
Пусть a - указатель на myClass.
Но в коде функции строка:
//...
return *a;
}
То есть по идее тип возвращаемого значения - не ссылка на myClass, а сам myClass. Почему так?
Если не заморачиваться, я бы сделал на Qt, там все есть для этого. Однако, потоки тебе нахуй не нужны для решения этой задачи.
Эта функция возвращает ссылку на объект.
Прочитай хотя бы одну книгу из ОП-поста, потом возвращайся.
Мы же в /pr/, запускай просесс монитор и просесс эксплорер, лолъ.
Ты не отличаешь rvalue от rvalue-ссылок.
Тип (int, long, rvalue-ссылка на тип T и т.д.) и категория значения (lvalue, prvalue, xvalue) это две ортогональные сущности.
>Ты имеешь в виду, что параметр функции, объявленный как rvalue-ссылка, сам является lvalue-ссылкой?
Если у чего-то тип rvalue-ссылки, то lvalue-ссылкой это являться никак не может. А вот просто lvalue являться может. Ты же можешь взять адрес от параметра, являющегося rvalue-ссылкой. А значит это lvalue.
>У тебя ссылка на указатель, которая в свою очередь является lvalue-ссылкой.
Нет, ссылка rvalue. Только делается попытка забиндить её к lvalue.
>Но ведь ссылки универсальная
У тебя там (https://ideone.com/jOpaec) нет ни одной универсальной ссылки.
ну чо ты как это самое! будь няшей епта! месяц назад вкатился в современный с++, до этого 10 лет кодил на зоопарке от жабы до чистого C
почему нет? поясни
ну кроме
>>1010885
ебатни c move, нежданчиками от nullptr и тп
я вот думал что уник для более надежной замены обычного указателя. но на практике меня начинает уже терзать сомнение об области применения unique_ptr.
Так же, for(auto& el : container), по ссылке же элементы достаются, а не значению.
>как правильно обходить контейнер с unique_ptr, когда нужно одновременно с двумя и более элементами из этого контейнера работать?
Как получается работать одновременно с двумя значениями, это и есть правильно.
Сделай второй параметр у count просто указателем на const char
>простой многопоточный код
>простой
Какой какой? Детка, простого многопоточного кода не бывает.
>простой многопоточный код
>должен крутиться поток,
>В этом же потоке открыто единственное соединение с БД
Что же ты, блядь, пишешь?
Хотя я, наверное, понял.
Что ты делаешь: заводишь мутекс, и все клиенты дёргают один мутекс. Как только мутекс замутен, они добавляют задание в очередь или whatever и размучивают мутекс.
>Что ты делаешь: заводишь мутекс, и все клиенты дёргают один мутекс. Как только мутекс замутен, они добавляют задание в очередь или whatever и размучивают мутекс.
Именно так и хочу сделать.
две пары ушей
C# жи есть.
Чем?
Интеграцию с десктопом до сих пор не запилили?
Когда в последний раз смотрел, были desktop components в альфа-бета стадии.
Да не было их там никогда, не рассказывай хуйни. Была гигантская залупа для пальцев всегда, потом от неё начали отказываться и выпиливали всякие тулбары в окнах, сейчас там кнопки и квадраты есть. Стандартные кнопаи меньше 4-х десктопных нельзя даже уменьшить, кек.
На нем только интерактивные приложения пилить, то есть для макдаков табло и прочую поеботу да, вполне годная вещь, только вот я не думаю, что приложения на мобилах будут отличаться низким потреблением энергии, потому что все это говно рендерится в OpenGL ну и соответственно расходы энергии выше.
Для десктопа, какого-то рабочего приложения, например для заолнения форм и работы с БД - залупа та еще, потому что некоторые компоненты до боли кривые. Например тот же TreeView или как его из QML работает вообще хуево и постоянно клепает дубликаты при обновлении лэйаута модели, в то время как у виджетов есть роли, позволяющие менять шрифт, текст и прочие свойства, чего нет в QML-ной адаптации.
Другое дело в том, что шрифты в виджетах рендерятся уебищно, вот это минус, да.
>я не думаю, что приложения на мобилах будут отличаться низким потреблением энергии, потому что все это говно рендерится в OpenGL ну и соответственно расходы энергии выше.
Испокон веков было так, что всё, что в железе сделано, потребляет меньше. О чём ты?
Ну 3D ядро задействовано в то время как можно было бы ограничиться 2D составляющей, которая потребляет значительно меньше энергии.
Очень сомнительная точка зрения. Во время приёма вызова имплементация может проверять третью кооридинату у всех объектов и включать упрощённый композитинг, если она у всех объектов нулевая.
Когда ты рисуешь на ЦП, ты должен каждый пиксель выставлять, в лучшем случае это один шаг цикла, даже если он развёрнут. Когда ты говоришь, что 3D хуже, то ты забываешь, насколько хренов в этом плане ЦП.
main() function should then pass these two values to a type void function that dis-
plays the two values in the format shown in the following sample run:
Enter the number of hours: 9
Enter the number of minutes: 28
Time: 9:28
/////////////////////////
Эту задачку из всем известного учебника я решил так.
https://pastebin.com/1iKLMfpD
Но я не смог понять, как отправить значения оператору void так, чтобы он их вывел
а что написано?
Пишем 3 любых числа, программа выводит их в порядке увеличения через запятую.
Или почему не работает пикрелейтед?
Не знаю, что ты за херню там нагородил. У тебя должно быть на каждый слот по присваиванию. А на деле присваивание может и не произойти из-за условий.
Погугли сортировок. Например, пузырёк.
Ну а чего? Мне просто не понятно, откуда берутся в итоге такие значения, которые берутся.
Во-первых твоё выражение в цикле не будем смотреть, зачем он тут, это твой алгоритм -
ты и скажи считается не так, как ты думаешь. a<b<c ~ (a<b)<c. a<b - это логическое значение true или false (0 или 1). Поэтому набор 0 3 2 будет проходить через эту проверку.
http://ideone.com/ar2Ptl
Во-вторых, ты сортируешь данные до тех пор, пока они отсортированы? Тут что-то не так.
Во-третьих, ты проверяешь условия цикла на данных, в которых ничего нет изначально, там ничего не значащий мусор. Кроме того, что эта проверка не имеет смысла, она вносит нестабильность в алгоритм. После каждого запуска работа программы будет отличаться, т.к. будет отличаться мусор в переменных.
Нужно создать несколько объектов класса в цикле for. Я так понял, надо создавать массив. Что читнуть, пагни?
std::cout << 'a';
Первое выводит 97, второе a, почему?
Ты забываешь, что видеопроцессор имеет не только 3D ускоритель, но и 2D. Второй то и нужен для быстрых и энергоэффективных отрисовок именно в двухмере (во всяком случае на десктопах так, на мобилах, скорее всего, тоже).
Про ЦП, естественно, это слишком жирная для него задача, не смотря на то, сколько бы ядер у их кастратов не было, все равно они достаточно слабые, чтобы составить конкуренцию видеоускорителям.
Для первого случая operator << определен в объявлении самого класса, поэтому вызывается он, а точнее:
>> std::basic_ostream &std::basic_ostream::operator<<(int value);
Для второго случая оператор определен в пространстве имен std (как независимая функция), и вызывается следующий метод:
>> std::basic_ostream &operator<<(std::basic_ostream &in, char value);
В соответствии с реализацией, ты и получаешь, что первый преобразует твой char в int (или unsigned int) и выводит число, второй метод выводит строковое представление.
Олсо, "Кнут - Искусство программирования". Если ты не можешь элементарный алгоритм закодить, тебе не плюсы учить надо.
>Нужно создать несколько объектов класса
Не в цикле фор, а
OBJECT звёздочка huipizda = new OBJECT[dohuya];
>std::basic_ostream &operator<<(std::basic_ostream &in, char value);
Бля пиздец, ну что это? Что это за бессвязный набор символов? Крестодебилы, как вы работаете на этом? Это же нечитабельный пиздец.
Все языки программирования содержат нечитабельный пиздец в том или ином виде. Если ты считаешь, что в твоём любимом языке такого нет, и это вовсе не дело привычки, то дебил тут ты.
В моем любимом языке программирования, по крайней мере, программа написана человекочитабельными словосочетаниями, а не спецсимволами.
Заебато, наверно, когда вместо символа + приходится лепить append().append().append() ...
Нахуй иди, говна кусок.
Господа, почему этот биопроблемник до сих пор не в своем загоне?
Крестодебил обыкновенный своим единственным противником считает джависта. Стоит указать крестоговну на тот или иной недостаток C++, как он сразу вскудахчет: "А вот в Java...". Невдомёк недотыкомке, что существуют языки типа Python, где строки кода напоминают человеческую речь, или изящный и лаконичный CoffeeScript... Откуда ему знать, ведь на этих языках вечером пишут продукт, которым утром пользуются тысячи человек, а не ТЫРПРАЙЗ.
Да нет, не приходится уже с незапамятных времен. А вот тебе, наверно, заебато вместо
ReturnType foo(ParamType bar) писать
const ReturnType const & const foo(const ParamType const & const bar const) const
>> Python
Норм язык, я ничего против него не имею
>> CoffeeScript
>> изящный и лаконичный
А как по мне, так ужасный весьма
>> Крестодебил обыкновенный своим единственным противником считает джависта
У Java своя ниша, у крестов своя. В чем дело-то?! У Java есть и свои достоинства, и хули дальше то.
У каждого языка свое назначение, и было бы глупо лезть с крестами в веб-разработку, например, где сроки наклепать говно бывают даже и по тройке недель. В свою очередь это предназначение и приводит к тому, что язык выглядит так, каким он есть.
Что мне мешает написать так же, как и у тебя?! Const-ы это не просто сахар, но и отличный способ заставить компилятор выбрать за тебя более удачную перегрузку функции, притом не обязательно, чтобы константный и неконстантный метод исполняли одно и то же.
>У Java своя ниша, у крестов своя. В чем дело-то?! У Java есть и свои достоинства, и хули дальше то.
20 слов, ноль смысла. Нахуя ты это написал?
Я тебе объясню, в чём дело. В посте выше >>1012284
анон справедливо заметил, что представленный код на крестах - нечитабельный пиздец. Сразу стриггерились две крестомакаки:
>>1012353
>>1012318
которые увидели в этих нападках происки джаваёбов. Nuff said.
Проиграл в голос.
Еще лучше мнемоническое правило было написано у Бочкова и Субботина: «изнутри наружу». Все, что участвует в создании типа объявляемой сущности: const, volatile, , (), [] читается от имени этой сущности (самая внутренность) — наружу (то есть влево для префиксов и вправо для постфиксов). Постфиксы () [] имют приоритет перед префиксами const volatile . Приоритет может быть изменен скобками.
Блядь, это уже специальная олимпиада какая-то.
Какая разница? Меньше спецсимволов, зато больше другого дерьма.
>>1012364
Ну, точно, так оно и оказалось.
>CoffeeScript
>action = action.replace /\bnew /g, '$&yy.'
Зачем тут action=?
> addLocationDataFn = (first, last) ->
> if not last
> "yy.addLocationDataFn(@#{first})"
> else
> "yy.addLocationDataFn(@#{first}, @#{last})"
Выделение функций пунктуацией придумал трус.
> [patternString, "$$ = #{addLocationDataFn(1, patternCount)}(#{action});", options]
Чтоблядь.
> o 'ObjAssignable : Expression', -> new Assign LOC(1)(new Value $1), $3, 'object',
> operatorToken: LOC(2)(new Literal $2)
ЧТОБЛЯДЬ.
Это я открыл страничку на оф. сайте для начинающих.
>зыки типа Python
Открываю рандомный репозиторий на гитхабе.
> response['Expires'] = (now + expire_offset).strftime("%a, %d %b %Y %T GMT")
Чоблядь.
> result[r(ih+1)+1:(r+1)(ih+1), c(iw+1)+1:(c+1)(iw+1), :] = images[ind].transpose((1,2,0))
Чоблядь? Что за двойные точки?
> if mask is None:
> result[0, :] = 0
> result[-1, :] = 0
> result[:, 0] = 0
> result[:, -1] = 0
>return result
ЧТОБЛЯДЬ.
> filtered, lambdas = _frangi_hessian_common_filter(image,
> scale_range, scale_step,
>beta1, beta2)
Такие же слепые вызовы функций, как в плюсах. Без IDE, в которой названия параметров будут рядом, это тот же C.
Это я всё к чему: все мы пытаемся использовать инструменты, придуманные другими, и каждый инструмент мы не понимаем интуитивно до конца. То, что ты свой КофеБлядьСкрипт понимаешь сейчас, не означает то, что ты понимал его в самом начале. Заткнись и лабай, пока не появится принципиально другой подход к программированию.
Какая разница? Меньше спецсимволов, зато больше другого дерьма.
>>1012364
Ну, точно, так оно и оказалось.
>CoffeeScript
>action = action.replace /\bnew /g, '$&yy.'
Зачем тут action=?
> addLocationDataFn = (first, last) ->
> if not last
> "yy.addLocationDataFn(@#{first})"
> else
> "yy.addLocationDataFn(@#{first}, @#{last})"
Выделение функций пунктуацией придумал трус.
> [patternString, "$$ = #{addLocationDataFn(1, patternCount)}(#{action});", options]
Чтоблядь.
> o 'ObjAssignable : Expression', -> new Assign LOC(1)(new Value $1), $3, 'object',
> operatorToken: LOC(2)(new Literal $2)
ЧТОБЛЯДЬ.
Это я открыл страничку на оф. сайте для начинающих.
>зыки типа Python
Открываю рандомный репозиторий на гитхабе.
> response['Expires'] = (now + expire_offset).strftime("%a, %d %b %Y %T GMT")
Чоблядь.
> result[r(ih+1)+1:(r+1)(ih+1), c(iw+1)+1:(c+1)(iw+1), :] = images[ind].transpose((1,2,0))
Чоблядь? Что за двойные точки?
> if mask is None:
> result[0, :] = 0
> result[-1, :] = 0
> result[:, 0] = 0
> result[:, -1] = 0
>return result
ЧТОБЛЯДЬ.
> filtered, lambdas = _frangi_hessian_common_filter(image,
> scale_range, scale_step,
>beta1, beta2)
Такие же слепые вызовы функций, как в плюсах. Без IDE, в которой названия параметров будут рядом, это тот же C.
Это я всё к чему: все мы пытаемся использовать инструменты, придуманные другими, и каждый инструмент мы не понимаем интуитивно до конца. То, что ты свой КофеБлядьСкрипт понимаешь сейчас, не означает то, что ты понимал его в самом начале. Заткнись и лабай, пока не появится принципиально другой подход к программированию.
Стандарт и граматика языка. Сойдёт:
const применяется к тому что слева. если слева ничего нет, то применяется к тому что справа. все.
а вторую хуйню я не понял.
PT Mono
Не был здесь с момента ухода опа. Поэт вернулся?
Как я понял, нужно текстом, типа как в тетрадке всякими формулами. Не программой, в общем
Одна из задач анона, который предложил вкатиться в это дело. Об этом деле он, помимо прочего, ничего не написал. Сказал нагуглить. Не получается
Так и быть, с барского плеча отправлю тебя в гугл с запросами
c++ int to binary
и
c++ low bit
теперь ты программист!
Никак, чтобы не тащить всякие мутные либы для локализации тащи сразу Qt core.
Consolas, Anonymous code pro, Monaco, Droid sans mono
пишу я такой в тетрадке
c++ int to binary
и
c++ low bit
и она мне значит такая двоичный код выводит и по ебалу с вертухи
Там свой антиалисинг и если его отключить то все шрифты распидорасит кроме терминуса и подобных не true type. Системный антиалиасинг в qt почему-то не работает.
libicu
Хуй знает, почему до сих пор не запилили, но обойти можно так: подобавлять названия всех валют в
constexpr map<string,int> pizda
и вместо
switch(name){
case "huy":
у тебя будет
switch(pizda[name]){
case pizda["huy"]:
Какие-то контейнеры стали constexpr-ами в 11, 14, 17 (не могу быстро нагуглить, в каком стандарте есть констекспр мап). То есть, все их методы должны принимать констекспр (вроде) и возвращать констекспр.
Добавить названия валют в pizda можно либо построчно:
pizda["долларъ"]=pizda.size();
либо через foreach какой-нибудь (не осилю).
КОРОЧЕ: лучше с лямбдами сделать:
map<string,function<void(string)>> pizda;
И запихать в pizda лямбду для каждой валюты.
Стыдно писать даже.
>Хуй знает, почему до сих пор не запилили
Страуструп считает, что сравнение в case должно выполняться за O(1), а в случае string сравнение выполняется за O(n).
Он за предсказуемость.
Нужно быть сильным дебилом для того, чтобы не знать, что строки сравниваются за O(n). Представил себе гигабайтным сорс со строковым литералом.
инбифо констекпр стринг
>Нужно быть сильным дебилом для того, чтобы не знать, что строки сравниваются за O(n).
Ну вот он знает. Поэтому против разрешения использовать в switch любых типов, имеющих оператор сравнения.
Почему нельзяобъявить внутриклассовый инициализатор типа static const double exp_coeff = 0.03;? Как это сделать кратко, если надо?
во всяких языках с подобной фичей это реализуется через хэш строки. в крестах это будет выглядеть примерно вот так: http://ideone.com/mZoGg5
Ололо. А ничего, что могут быть коллизии?
Часто с вами такое случается?
Хочу изучить OpenGL ES, подскажите, с чего начать. Работаю под виндой в Visual Studio 2015. Скачал книгу по GLES 3.0, скачал хедеры, но не знаю, где взять .lib, .dll или что там еще нужно. Обновил студию, чтобы появились новые категории во вкладке Cross Platform, но проект GLES создать все равно нельзя. Реквестирую гайд для дебила.
Не то чтобы часто. Во всех книгах вдалбливается священный трепет перед низкоуровневой работой с памятью, так что при работе с массивами и указателями вырабатывается определённая паранойя.
К тому же, в С++11 ввели-таки сверхполезнае умные указатели, существенно облегчающие работу с памятью.
https://msdn.microsoft.com/ru-ru/library/hh279674.aspx
http://archive.kalnytskyi.com/2011/11/02/smart-pointers-in-cpp11/
Как правильно совладать с функциями и source.cpp/header.h/main.cpp
Есть
void zhepa(int benis); иницализация(?)
void zhepa(int benis){ benis++} функция
zhepa(benis); вызов
Куда все правильно распихать чтобы вызвать в мейне?
>void zhepa(int benis);
Это прототип. Должен быть объявлен вне всех функций и до вызова функции, которую он определяет.
>void zhepa(int benis){ benis++}
Функция. В любом месте исходника вне других функций.
>zhepa(benis)
Это вызов. В любой функции при условии, что прототип объявлен выше.
>header.h
Это заголовочный файл. Если "main" и "zhepa" разнесены по разным .срр файлам, то чтобы вызвать "zhepa" из "main" ты должен объявить "zhepa" в заголовочном файле, а затем впиздячить его в main.срр директивой препроцессора #include.
Вообще говоря, всё это есть в абсолютно любой книжечке по С++. А ньюфаги отправляются в специальный тред >>1008826 (OP)
И последнее: пожалуйста, никогда, никогда не используй такие вот имена типа "benis" и "zhepa". Это неинформативно, дегенеративно, несмешно и дурной тон.
Сделал всё, как полагается. Пишет в ходе построения произошли ошибки. Прога скачано по ссылке с того же сайта. Ссылка на микрософт. Вопрос: какого хуя?
> И последнее
Я знаю, я само собой фильтрую базар названия, а использую только тут для наглядности.
Вообщем я
> объявить "zhepa" в заголовочном файле, а затем впиздячить его в main.срр директивой препроцессора #include
Написал объявление всех функций в Header.h и в мейне сделал #include "Header.h" / #include "Source.cpp".
В Source.cpp сами функции.
Выдает при компиляции на все функции:
error LNK2005: "функциянейм с магическими символами" уже определен в Main.obj.
И еще LNK1169: обнаружен многократно определенный символ - один или более.
Я изначально так и делал и пробовал по разному вставлять
(Спасибо за уделенное время)
Ах да и еще на структуры в header так же ругается
Я даун, убрал в мейне соурс и все работает. Спасибо
Для int никакой
>#include "Source.cpp"
Это лишнее. Надо так: #include "Header.h" пишешь только в main.cpp и Source.cpp, в Header.h ничего не пишешь. А вообще уже советовали выше читнуть любую из книжек в шапке, там все подробно и понятно про это написано.
Нужно
Нужно. Потому что умные указатели, во-первых, всё же не панацея. Во-вторых, общие правила работы с указателями применимы и для умных указателей. В-третьих, свежие стандарты поддерживаются далеко не везде, и вообще говоря, каждый компилятор реализует стандарт по-своему, иногда расхождения становятся значительными. В-четвёртых, программистам довольна часто приходится разбирать и переписывать несвежий\старый\древний\доисторический код, и знакомство с прошлыми стандартами становится необходимым.
Если кратко, то это парсер методом рекурсивного спуска. А вообще разработка этого калькулятора довольно подробно описана в книге Страуструпа "Принципы и практика с использованием C++" (есть в шапке) в главах 6-7.
else :false
if Billy=лох else 0 :approveded
...............
range(i=0, k=2, x=b)
b:onload
Write:"Billy fuccking veryfecalishhiet"
Print ("Billy fuccking veryfecalishhiet")
end.
Да, уже исправил. А все равно не работает.
Нет. Здесь - кресты и могильщики. А та принёс далеко не гроб.
Сорян, просто не куда писать об этом. Тут я использую Qt
Это бнф, вась. Ей никак не пользоваться, это формальное обозначение правил грамматики, которые можно либо руками имплементировать, либо взять какой нибудь генератор поддерживающий что нужно твоей грамматике (из таких особенностей для этой твоей нужна только поддержка левой рекурсии, её поддерживает всё кроме PEG-а) и описать эти правила с поправкой на синтаксис генератора. Примеры таких — bison, antlr, gold.
А что, в одном INSERT можно больше одной строки вставить?
Думаю, при вставке большого числа строк, оптимальной будет последовательность:
1. Подготовить запрос.
2. Начать транзакцию.
3. В цикле биндить поля и исполнять запрос.
4. Закончить транзакцию если всё ок, иначе откатить.
Запилен OutputDebugString в констурктор и деструктор, причем если конструктор вызывается тогда, когда и нужно, то почему-то во время определенных действий дестурктор одного и того же объекта вызывается 20 раз (output в дебаг консоль).
Проект здоровый, может кто знает в чем дело?
Разобрался
Я в boost::bind передавал разадресованый shared_ptr, хуй его как это вообще работало
Впрочем, о чём это я.
Visual Studio (топ для лаб, не знаю, чё там по разработке), NetBeans, Eclipse CDT.
Форматирование в printf гугли для вывода.
Насчет как выделить - если например в bool переменную, то так:
int a=456;
bool lowbit = a & 1;
В блокноте. Потом поднимают виртуальную линух-машину на оракле и компилируют ГриЦаЦуевым, потому как полностью свежий стандарт поддерживает только он.
Посмотри библиотечные функции для работы со строками. Можно использовать сравнение строк и запись результата в управляющую переменную, т.е. если рубль - 1, если фунт - 2 и т.д., и далее подавать эту переменную на switch.
Но я бы обошелся вообще без свича. Можно ведь просто вызывать соответствующую функцию-конвертер сразу после проверки строк.
Ну у всех свой хитровыебанный компилятор. Можно под .net компилить, можно обычные бинарники, если ты про это.
>VS же использует свой хитровыебанный компилятор или нет уже?
Да, Visual C++. Он, например, ложит хуй на ключевое слово register, и имеет безопасные реализации некоторых библиотечных функций, которые он будет навязчиво пытаться тебе всучить в каждой программе. Ещё студия несколько фашистски подходит к оформлению кода, что может неслабо раздражать, но, всё же, повышает его читаемость, особенно у начинающих. Ещё он по-своему реализует стандарт, и в настоящий момент является месивом из 11 и 14 стандартов. К счастью, имеет весьма полную и подробную документацию на сайте.
На темплейтах. Пишешь огромный текстовый ребус, потом он пишет за тебя весь код.
Хочу задрочить Qt под линуксом. Имею небольшой опыт кодинга под виндой, однако под линуксом возникла проблема с созданием окна, потому что IDE не генерирует какие-то говнофайлы с определением базового класса окна и .ui. Как под линуксом решается эта проблема и как создается окно?
правильнее void main(void)
>This application failed to start because it could not find or load the Qt platform plugin "windows"
in "".
Как лечится это дерьмо? Ни один из способов, которые я нагуглил, не помог.
Тебе надо переустановить Шindoшs.
Примерно все современные браузерные жс-движки написаны на плюсах (гугловский v8, мозиловский SpiderMonkey, майковская chakra (да-да, это все потому что у них СЕО индус, гы), эпловский nitro (хотя там и закрыты исходники, но на чём писался вбежит мы все помним).
Увидел в требованиях "Знание компиляторов". Что сюда входит?
>SpiderMonkey
изначально на си, потом его скатили в говно переписав на плюсы, а вот v8 всегда был говном.
Когда это он на си был? Пруфани-ка, а то я открываю исходники и вижу чистейший плюсовый код, даже без намёка на сишное говнецо. По опыту того же гцц пока можно только утверждать что от сишного говна проекты такого размера за 5-6 лет даже близко не отмываются.
А v8 всегда был передовиком — не скажу точно насчёт жита, который там почти всегда был впереди планеты всей, а вот нормальная сборка мусора, сандбоксинг и прочее в нём точно появилось раньше всех.
> Когда это он на си был?
Они там его несколько раз подряд переписывали. По моему переход на C++ начался с JaegerMonkey (оптимизирующий конпелятор) и дальше по наклонной.
>сишное говнецо
наркоман, на си был маленький и шустрый движок, после обмазывания плюсами стало миллионостроковое ничитаемое говно, даже самсунг начал свой джерискрипт пилить. v8 сосет у спидерманки по тестам.
> полностью реализует 14
Вот код и результат работы
1. clang https://wandbox.org/permlink/qTHZAHWbNGH9DCvV
2. gcc https://wandbox.org/permlink/hrJMdPAKDmEtt9UV
MSVC печатает "SS", что неверно. Т.е. он не поддерживает даже C++98, не то, что C++14.
> и шустрый
С этим я бы поспорил. Хром на момент появления рвал его в клочья. Да и "быстрым" он был, потому что на JS самого кода было мало. Это сейчас js файлы мегабайтами скачиваются ради показа баннера с рекламой.
>после обмазывания плюсами стало миллионостроковое ничитаемое говно
У мозилы кстати ахуенный кодстай в отличие от того же гугла и мс-а, всё крайне читаемо.
Кстати, тебя не смущает что уже прошел почти десяток лет, жс вырос в несколько раз, жит тогда только вводили в него (т.е. он несравнимо меньше умел чем текущий), там был уёбский рантайм с говёным сборщиком, без всякой асинхронной залупы из новых стандартов жса, без поддержки asm.js, webgl и ещё триллиарда технологий появившихся в последние 5 лет? Я с таким же успехом могу написать интерпретатор жс на котором можно сделать прыгающую мартышку и пойти сравнить его с jeagermonkey — пиздец сишная простыня на тыщи строк-то.
Кстати, ты это, сходи глянь исходники какого нибудь gcc или питона, там вот прям видно как C в больших проектах хорош, это говно даже ни одна IDE не переваривает, лол.
Очень много кстати, знаю, идите нахуй.
> мозилы кстати ахуенный кодстай
У них для разных компонентов разные кодстайлы. Даже периодически срачи возникают на тему единого кодстайла, который заканчивается ничем, потому что всем всё и так нравится.
смотрел исходники перла, ваткома, все заебись. код гцц говно, потому, что дохуя макак туда набежала и каждый пушил что хотел, та же проблема и у линупса.
> И что с ним делать?
Использовать.
>Все равно IDE на подсистеме не запустишь.
1. С чего ты взял?
2. Зачем тебе IDE?
У меня 14 стандарт почему-то реализован
>>1015173
> запускать IDE на подсистеме
Удачи
> зачем IDE
Для удобства.
>У меня 14 стандарт почему-то реализован
В студии выводится "TS" или нет? Если нет, то там нихуя не реализовано.
>говорят посмотреть живые, развивающиеся проекты, идущие в ногу с требованиями в этой области в 2к17
>анон отвечает: посмотрите моё мёртвое говно, заброшенное в 2005. Оно же няшное!
Это судьба любого большого проекта которых хочет жить, а не развиваться полутора челиками и сдохнуть через пару лет.
плюс к этому щас вывод типов есть в крестах, так чтож это не надо использовать (хотя и раньше всегда недоумевал почему value_type так редко использовали)
Да.
вкатываюсь в программирование
подскажите, лучше с Си начать или С++?
читал что с++ это подвид Си
java или javascript
забудь про кресты, будет самым большим твоим разочарованием, тратой времени на то что никогда не окупится
Если с педагогической целью - то си. Если практически говоря, то будем считать тебя средним вкатывательщиком (это дебил), поэтому джаваскрипт.
Я пишу на Си с классами. Это разновидность С++, где из самого С++ используются только простейшие классы, да и то только для инкапсуляции. Просто на Си заёбывает писать функции уровня void do_somethimg_with_data(data_struct* data, ...);
Не за что.
>>1015332
Жс же для браузеров только?
>>1015355
Почему даун? Читал что программистам на реакт платят 300к/с в /б был тред пару дней назад
Так платят парочке спецов, а вкатывальщиков вроде тебя без опыта и вообще нихуя настолько много, что даже за еду никуда не возьмут, тем более с плюсами.
Самая легкая дорога для выката (меньше чем за ~5 лет — жс).
>Я пишу на Си с классами
Внезапно — плюсы изначально и были си с классами.
Непонятно что такие долбоёбы как ты понимают тогда под "плюсовым" кодом. Ребусы из шаблонов разворачивающиеся в 100 мб исходников? Грузная ынтерпрайз-хуита вроде DI и прочего?
"Реализуйте два класса. В каждом из классов реализуйте функцию-член, не принимающую параметров. Функции-члены должны быть названы одинаково. Реализуйте свободную функцию, принимающую один параметр таким образом, что объект любого из двух классов может быть безопасно передан в функцию и вышеупомянутая функция-член вызвана. Классы не должны быть связаны отношением наследования (нет общих предков, ни один не является наследником другого)."
А теперь вопрос. Я тут налепил https://pastebin.com/bJePR6Dz на 5 минут и задание какое-то несложное на первый взгляд. Может какие подводные камни есть (это же c++ и они должны быть)?
Ну так у тебя в классе BadClass нет функции-члена bad(), например. Явно же компилятор говорит, что нету такой сигнатуры BadClass::bar() в коде у тебя, но лучшей кандидатурой на оную является void BadClass::bar(int), но в таком случае параметр должен иметь значение по умолчанию хотя бы какое-нибудь.
http://rextester.com/AKK60073
PT Mono и замени fontconfig на убунтовский fontconfig-ubuntu. Эти макаки смогли оптимизировать алгоритм сглаживания шрифтов.
BadClass и не должен работать. Я его добавил, чтобы продемонстрировать безопасность кода. Что ошибка вылетит во время компиляции, а не в рантайме.
Внезапно дело в системе. Нормальные рендеры шрифтов с человеческим сглаживанием есть только на шинде и маке (на последнем только для хай-реза).
Terminus/Terminess Powerline
мне веб не интересно, хочется хотя бы админом
Сап аноны
Почти 2 года читаю, пока кроме hellowordov ничего не написал, но чую скоро программирование попрет!
Прочитал все книги Касперски, пол главы книги по JS, курс по html и css, курс на ютубе по реверсу и крякингу, введение в системное программирование, три главы K&R, половину Лафоре, гайд по Си, а так же скачал все книги Страусупа!
Как вкатиться в работу, чтобы взяли джунить на сях?
Спасибо
Ты должен понимать, что начинаешь учиться, когда тебе сложно/ты что-то не понимаешь.
Я не знаю, какой у тебя уровень. Но любил иногда для разминки codewars.com захаживать. Там есть много заданий, среди них много простых. Посмотри, на что способен.
Также есть куча сайтов с олимпиадными заданиями, игры, в которых нужно кодить, чтобы побеждать и т.д..
Ну и есть много ресурсов, которые направлены на обучение практической разработке/формошлёпству.
Задачи люблю решать на си, есть учебник по математике со школы с задачками, вот их решаю.
Насколько джуниор должен знать устройство процессора, памяти? Прочитал, но всякие транзисторы плохо укладываются в голове. Когда читал было вроде понятно, но сейчас не вспомню что там и как в деталях.
По работе редко нужно вдаваться в подробности.
Мне кажется базовых знаний о компьютере и иерархии памяти должно хватить. Также немного про разные регистры, и способы организации памяти в программах (стек, куча). Это всё нужно, чтобы писать корректные программы на тех же крестах. Но без практики и ошибок осознать эти концепции и полезность их знания сложно.
Изучал вакансии по крестам/си? Есть что-то подходящее?
Как хранить SQL-запросы прир разработке на Qt? Хардкодить?
Да. Или переходишь на какую-нибудь ORM.
Нет, хранить в ресурсах и при необходимости редактировать в рантайме.
Конечно, блять, хардкодить. Изучи паттерны дао и репозитория.
поясните за задание плес. с^key это число? то есть берем, например, 'a' это по аски 97 и возводим это в степень значения символа key? а ничего что это ахуенно большое число? и как тут получится исходная строка при повторном шифровании?
В C++ оператор ^ - это побитовое исключающее ИЛИ.
>>1015967
Что не так? Он не написал только, что это побитовое.
Я думаю, что это спрашивающий анон фейспалмит.
Записался на курсы по С++, 20к за 70 часов обучения. Кто ходил на подобные курсы, реально ли хоть что-то уловить в С++ за 70 часов? Стоит ли оно своих денег? Пока не поздно может дать обратную?
http://san-tit.blogspot.ru/2016/03/opencv-310-visual-studio-2015.html
Два совета.
1. Ты ввалил за это деньги. Это значит, что ты можешь заёбывать препода. Препода, а не гугл, это важно. Да, самому искать информацию необходимо, но если ты всё равно нихуя не понял после поиска и обдумывания - заёбывай его.
2. Делай как можно больше приближённых к реальности задач. Задрачивание абстрактной хуиты типа напрочь оторванных от действительности примеров - очень скучная практика, которая, к тому же, ещё и имеет низкую эффективность.
Разве что ради того чтобы подоёбывать живого препода, а не гугл. А так смысла с гулькин хуй — программирование чуть менее чем полностью состоит из самообучения, и чем раньше ты к такому привыкнешь — тем лучше.
>Задрачивание абстрактной хуиты типа напрочь оторванных от действительности примеров - очень скучная практика, которая, к тому же, ещё и имеет низкую эффективность.
Ахуительный совет. Теперь, будь добр, высри-ка свою классификацию «абстрактной хуиты» и «полезной жизы».
>программирование чуть менее чем полностью состоит из самообучения
Это задротство состоит из самообучения.
>vcpkg
Запускаю собранный экзешник - он вылетает, не давая мне посмотреть на доступные опции. Нугет установил 2.4. Ну, и на этом спасибо.
еще обещали показать стандартную библиотеку
Я так понимаю, уровень старших классов? Ну курсы на таком уровне уж точно есть. Но некоторые люди не могут сами или им нужен толчок.
Видел пару видосов в интернете, как чувак читы на крестах писал.
Ну и статьи, книги есть какие-нибудь.
бля, это троллинг? я не верю
за 20к я бы тебя по скайпу натаскал вплоть до теплейтов, понимания вир функций и всякой хуйни типа указателей на указатели
20к в секунду?
спасибо)
>с ключами
По-русски совсем не разговариваешь? Какие ключи: реестра, активации, шифрования?
>ох лол, ты походу, нулевой
Мне не всралось самому библиотеки из исходников собирать, я не для того прогать учился. Хуле нельзя, как в питоне, пакадж менеджером всё поставить за 2 минуты?
дурик, вот и иди в петон тред скачивать пакеджи, а тут люди программируют
Теперь гораздо проще обассывать его любителей, наглядно демонстрируя убогость его оптимизатора. Жаль только, что версия там самая новая, в ней оптимизатор стал менее убогим, чем был до 2017-й версии.
Итак, я начну с проверки того, насколько свободно чувствует себя оптимизатор, если ему разрешить нестрого относиться к floating-point арифметике. GCC показал себя более лучше: он превратил произведение корней чисел в корень из произведения.
https://godbolt.org/g/iEKC63
Или в крестах это одно и то же?
Кстати да, почему gcc генерирует такой аккуратный код, который приятно читать, а msvc срет сотнями строк, в каждой из которой много говна и вообще все выглядит очень страшно
>Кстати да, почему gcc генерирует такой аккуратный код
Ну не всегда. Если изменить в том коде, что я привёл, double на float, то gcc зачем-то будет преобразовывать его в double, проводить операции и перед возвращением преобразовывать обратно во float, когда как cl просто заменит sqrtsd на sqrtss и mulsd на mulss
нетривиальный вопрос
если я хочу кодить на сях грузинскими или армянскими буквами, какую библиотеку подключить?
не тупо выебнуться, а так надо, шифрую код программы просто
эту тему лучше не вскрывать шутливые т молодые,
Плюсаны, объясните, что это за конструкция такая. Умом понимаю, что тут они от начала массива локального в стеке адрес возврата как-то получают, но что это за конструкция абсолютно неясно.
Для тех, кому лень идеоне открывать, соберите вот что и удивитесь:
#include <iostream>
using namespace std;
int main() {
int a[4] = {1, 2, 3, 0};
cout << (1 + 2[a]);
return 0;
}
Тебя 2[a] удивляет? Сабскрипт оператор можно в любом порядке просто записывать. 2[a] == a[2]. Операнды оператора от этого не меняются.
2[a] вернет 3
Не знал, а какая мотивация была так делать?
>>1016581
Я довольно давно знаком с плюсами, но кода относительно мало написал, потому таких нюансов как-то не встречал.
Нет, видимо стоит уже что-то прочесть серьезное.
Понял, что a == *(a+i), ну а сложение коммутативно, потому и эта штука с 2[a].
Тут недавно один вкатывающийся с 1 массивы нумеровал, я решил что это ты. Слово-детект уже вобщем.
>Для тех, кому лень идеоне открывать, соберите вот что и удивитесь:
Если тебя удивляет такая хрень, то ты ошибся тредом. Тебе в прикреплённый загон.
Просто я не надрачивал тесты, поэтому и удивляет, да. Не могу представить реальный пример использования подобной конструкции.
ПЕРЕКОТ >>1016662 (OP)
ПЕРЕКОТ >>1016662 (OP)
ПЕРЕКОТ >>1016662 (OP)
ПЕРЕКОТ >>1016662 (OP)
Если с линуксом, до делай окно кодом, лел. Никаких тебе редакторов форм.
А если серьезно, когда проект создаешь там флажочек ставишь?
Это копия, сохраненная 16 июля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.