• STD::set erase не работает?

    @MarkusD Куратор тега C++
    Герман, нет. У тебя сет из указателей. Сравнивает он всегда только указатели. Под условием у тебя strcmp сравнивает строки. А во всех остальных случаях (т.е. при вызове count и erase для сета) у тебя сравниваются только указатели.
  • STD::set erase не работает?

    @MarkusD Куратор тега C++
    Герман , ну давай подумаем вместе. Что будет если сравнить два указателя? Что именно сравнивается в этом случае?
  • Почему вызов метода класса гораздо медленее вызова обычной функции и как это исправить?

    @MarkusD Куратор тега C++
    Никита, unsigned long long n0 не является кодом C++. В этой строке нарушается стандарт языка.
    Похоже ты используешь GCC. Тебе стоит привести используемый тобой сценарий сборки сборки для обоих случав.
  • Какое направление сейчас более перспективно?

    Mishele123
    Всем привет.

    П3.4 регламента работы сервиса: Вопрос и его описание не должны содержать приветствий и прочих «лирических отступлений».
  • Работа C++ Junior в 2022?

    Sti11_Negat1ve
    Доброго времени суток.

    П3.4 регламента работы сервиса: Вопрос и его описание не должны содержать приветствий и прочих «лирических отступлений»..

    Я изучаю C++ лет этак 12 (с 6 класса, получается).

    Остается только узнать, в каком году тебе было 12 лет.

    Навыки - Синтаксис, ООП, STL, Математическая база.

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

    Скромный публичный репозиторий с кодом и нет вышки.

    На это уже есть ответ.

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

    Такая работа есть, ее полно, но нужен на такие должности отнюдь не соискатель с околоначальными навыками. Туда нужны люди уже уверенно владеющие инструментом C++. Получить такой багаж знаний и опыта можно, хоть и сложно. Тебе достаточно просто самостоятельно учиться каждый день. Это тоже относится к моей предыдущей ссылке на ответ про вышку.
  • Где можно собрать команду для разработки игры?

    WasTabon , чтобы ответить на твой вопрос, нужно сперва узнать где ты уже был и почему отказался от коллаборации там.
  • Как пофиксить ошибку линковщика?

    @MarkusD Куратор тега C++
    DmItrENub, тогда тебе стоит обратить к руководству по настройке статических библиотек в студии.
    Тебе нужно правильно положить .lib файл и добавить его имя в список используемых библиотек в свойствах проекта.
  • Как пофиксить ошибку линковщика?

    @MarkusD Куратор тега C++
    DmItrENub , в какой среде собираешь свой проект?
  • Почему возникают такие ошибки?

    @MarkusD Куратор тега C++
    Brew, П3.8 регламента работы сервиса.
    К сожалению текст на твоих изображениях неразборчив и замылен. Его неприятно читать, поэтому желания отвечать на вопрос не появляется.
    Я рекомендую тебе заменить все изображения с текстом ошибок на листинг ошибок из лога сборки, оформленный тегом <code>.
  • Как определить тип функции для шаблона?

    @MarkusD Куратор тега C++
    yatanai , хороший совет: не писать вопросы в три ночи. Вряд ли на такой вопрос быстро ответят, вряд ли ты находишься в достаточно трезвом уме чтобы изложить суть вопроса в понятной форме, вряд ли тебе не придется вносить уточнения утром.

    Так и тут. Где конкретно находится этот int n? Я пока только одно место вижу и оно не в шаблоне, поэтому я пока тебя не понимаю.

    class property : public C, а если у C этих property 50+ штук? Реальный пример, для одного из типов у меня порядка 60 свойств определено.

    Тебе не нравится использование decltype(C::n) в шаблоне?
  • Как сделать значения по умолчанию в классе C++?

    @MarkusD Куратор тега C++
    MaratPetrov96
    Здравствуйте!

    П3.4 регламента работы сервиса: Вопрос и его описание не должны содержать приветствий и прочих «лирических отступлений»..

    Опишите конструктор объекта по умолчанию (без аргументов), проинициализировав все данные

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

    char* m = "Renault", тут "Renault" имеет тип const char[N], который свести можно только к const char*. Представленная строка не пройдет трансляцию т.к. тип справа невозможно привести к типу слева.
    char* marka; относится сюда же. Это поле должно иметь тип const char*.

    Car(); и Car(char* m = "Renault" ...) вводят неоднозначность для случая Car example;. Эту неоднозначность нужно убрать и я рекомендую выполнить задание так, как оно написано: т.е. ввести значения по умолчанию в секции инициализации полей конструктора по умолчанию, а от аргументов по умолчанию для конструктора с параметрами отказаться.
  • Почему MinGW не видит winapi функцию?

    Марат Нагаев, ключевая часть фразы - это: "вроде бы".
    expected identifier before string constant

    Это сообщение говорит о том, что в коде на этой строке или выше, все-таки, у тебя ошибка.
  • Почему при вызове деструктора не меняется переменная?

    @MarkusD Куратор тега C++
    res2001, и не поспоришь ведь. Все верно. :)
  • Почему при вызове деструктора не меняется переменная?

    @MarkusD Куратор тега C++
    liver2009, у тебя в коде тип a реализует схему владения памятью. Владение у тебя, согласно деструктору типа a и счетчику ссылок, реализовано совместное.
    Но для поддержки схемы совместного владения ты не реализовал ни одного конструктора или оператора для копирования и перемещения ресурса, которым твой тип владеет. Такими конструкторами будут конструктор копирования и конструктор перемещения. А операторами - оператор копирования и оператор перемещения.

    В целом, твоей задачей является просто последовать правилу 3/5/0, т.е. правилу пяти чтобы у тебя память ресурса не утекла. Еще для правильного подсчета ссылок тебе надо что-то сделать со своим счетчиком, пока что у тебя значение delete_counter для каждой инстанции a является уникальным, а должно быть уникальным для каждого уникального значения bObj. Да и в целом, счетчик сейчас работает неправильно. Он должен гарантировать удаление уникального bObj только один раз за все совместное владение.

    Пока что, в твоем коде у тебя получается что в один момент времени, точно после отработки оператора копирования по умолчанию, у тебя и *aobj1, и локальный временный a(2), владеют одной памятью. Сразу после этого локальный временный a(2) эту самую память удаляет в своем деструкторе, а *aobj1 начинает ссылаться на мусор.
    К моменту delete aobj1; ты получаешь UB, т.к. деструктор для памяти по указателю aobj1->bObj вызывается уже второй раз.
  • Почему при вызове деструктора не меняется переменная?

    @MarkusD Куратор тега C++
    Василий Дёмин, да, легко, это приводит к UB.
    Просто, подобно автору вопроса, пишем в два разных места один адрес объекта, а потом не задавая вопросов дважды удаляем этот объект из двух этих разных мест.
    Итог: деструктор вызван два раза, второй раз - для неправильного адреса, по которому уже нет объекта.
  • Почему при вызове деструктора не меняется переменная?

    @MarkusD Куратор тега C++
    res2001, можно поправлю? :)
    в этот объект побайтно копируется содержимое временного объекта

    Начиная с C++11 конструкторы и операторы копирования по умолчанию не побайтово копируют память, а используют конструкторы или операторы копирования типов полей.
    Поэтому конструктор и оператор копирования по умолчанию, для возможности быть определенным неявно, требует свойства копируемости от всех полей типа.
  • Почему простой цикл на c++ выполняется медленнее, чем на golang?

    @MarkusD Куратор тега C++
    rPman, как бы long long c = 0; не является кодом C++. Типа по умолчанию в C++ нет.
    Да и в целом, это код C, а не C++. Но собираешь ты его через g++, подтверждая лишний раз нестандартность подхода к стандарту C++ в GCC.
    GCC очень во многих примерах кода сильно отстает от MSCL и clang. Я бы рекомендовал использовать clang для проверок в этом вопросе.

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

    Дима Щербаков , за один год в геймдев? Давай немного приоткрою текущую ситуацию. Я надеюсь, ты живешь где-нибудь за пределами СНГ.
    На текущий момент на территории СНГ закрылись даже такие компании, как Wargaming, Plarium и Sperasoft. О более мелких компаниях можно не говорить, они гроздьями сыпятся с дерева игрового рынка.
    Буквально тысячи разработчиков игр получают вольные и идут искать дальше свою работу мечты. Кто-то уезжает, кто-то идет в другие области разработки П.О. Но рынок соискателей внутри геймдева сейчас перенасыщен дешевеющими высококвалифицированными кадрами.
    И эта ситуация не месяц еще продлится. Через год усердного обучения ты сможешь, как максимум, только напоминать начинающего разработчика. А конкурировать тебе придется с такими людьми, как я.
  • Как в цикле заполнить структуру?

    @MarkusD Куратор тега C++
    Adamos
    Мне решение с map-классом представляется более гибким

    На самом деле можно и так. Решения действительно одноранговые.
    У меня есть реализация и такого подхода тоже. В такой мапе я храню как прямо значения, так и ссылки на них или даже произвольные пары указателей на методы чтения и записи значения. Все это добро равнозначно читается и пишется как через строки, так и через выраженный тип хранящегося значения.

    то есть вы, как и rPman, предлагаете сваять генератор

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