• Исходный файл не находит соответствующую функцию, как исправить?

    @MarkusD Куратор тега C++
    zenz, небольшой совет тебе на будущее.
    П3.8 регламента запрещает публикацию текста в изображениях. Многие люди, как и я, просто отказываются вчитываться в том мыло, которое ты опубликовал. Лично мне мои глаза дороже ответа тебе.
    Поведение в нарушение правил бросает обществу вызов, поэтому такое поведение и называется вызывающим. Я просто советую тебе не заниматься этим.

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

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

    @MarkusD Куратор тега C++
    Sergo Zar, и тебе спасибо что отнесся к моим словам с пониманием.

    delete[] arr, temp;
    Тут используется operator , (), поведение которого по умолчанию возвращает только правый операнд.
    В твоем коде утекает arr. Разбей эту строку на две, в каждой из которых удаляй конкретный массив.

    void pushBack(T value)
    Логика работы этого метода должна быть такой:
    1- увеличить длину вектора на один;
    2- увеличить емкость вектора если длина стала больше емкости;
    3- переместить в последнюю ячейку вектора состояние объекта value.

    При этом, процесс увеличения емкости должен быть такой:
    1- изменить емкость согласно закону роста емкости;
    2- создать блок памяти размером новой емкости и локально сохранить его указатель;
    3- переместить все значения ячеек старого блока памяти в новый;
    4- удалить старый блок памяти;
    5- записать новый блок памяти из локального указателя в состояние вектора.

    У тебя поведение этой функции не вписывается в оговоренное. Именно в ней имеется основная проблема. Вообще по этой функции видно что сокращенными или неосмысленными именами ты себя сам запутываешь. Этого легко избежать если использовать более говорящие имена в коде.
    Основными элементами состояния вектора являются: блок памяти элементов - elements_memory или memory_block (Второе менее предпочтительно, но тоже понятно. Первое будет понятно очень хорошо); емкость блока памяти - memory_capacity или capacity; длина вектора - elements_count или length или size (последнее менее всего предпочтительно, но канонично относительно реализации вектора); закон роста емкости и закон аллокации элементов.
    Последний в стандарте представлен как std::allocator. Закон роста емкости обычно вписывают прямо в реализацию как функцию роста емкости.
    Ключевыми функциями вектора являются: рост емкости - reserve (только рост, емкость не уменьшается); изменение длины - resize (длину можно и уменьшать); очистка - clear и вставка в конец - push_back.
    Это все - говорящие имена, раскрывающие через себя суть существования конструкций в коде. Я советую тебе стараться тоже подбирать такие имена, которые сразу будут раскрывать смысл существования конструкции.
    Код void pushBack(T value) нужно просто переписать, в текущем коде ломается целостность состояния вектора. Именно поэтому у тебя вектор не работает со строками. Текущий код выполняет buffer overrun прямо на ровном месте потому что ты сперва сделал length++;, а потом уже clon();, в котором цикл вышел за пределы памяти arr.

    T& operator[](int i)
    Очень тяжелый код. Тебе не нужно использовать исключения там где ты можешь справиться конструкциями ветвления. Ситуация в этом коде усугубляется еще и тем, что конструкции ветвления тебе приходится использовать аж дважды: сперва под блоком try, а потом еще и в catch.
    Тебе будет лучше поставить ассерт с проверками индекса, после чего вернуть элемент по индексу.
  • Почему мой вектор не работает со строками?

    @MarkusD Куратор тега C++
    Sergo Zar , я все понимаю, у тебя уникальный стиль исполнения и уникальное видение проблемы передачи смысла кода.
    Только теперь тебе придется выбрать одно из двух. Или всю терминологию этого кода переписать на грамматически чистый английский язык, или разбираться со своей проблемой исключительно самостоятельно.
    Пока я вижу только одну проблему в твоем коде: он не соответствует стандарту, т.к. написан не в соответствии с базовым набором символов.
  • Исходный файл не находит соответствующую функцию, как исправить?

    @MarkusD Куратор тега C++
    zenz , так а ошибки тебе какие транслятор пишет?
  • О безопасности Сбербанк Онлайн - неизменный пароль?

    Drno, смена симки приведет к временной блокировке онлайн банка.
    Когда у тебя крадут карту, тебе достаточно обратиться в банк (как можно скорее) и заблокировать карту + функции онлайн банка. Отделений сбера везде как грязи, буквально в пешей доступности отовсюду.
    Мобильник должен быть зашифрован и защищен биометрией или пином. Иначе онлайн банк держать стоит только на том устройстве, которое никогда не пересечется с картой в физическом мире.
    Онлайн банк сбера защищается пином, смена которого приводит к временной блокировке функций. За это время ты успеешь 10 раз добежать до отделения и заблокировать все что только можно.
    Из разряда паранойи: сделать нечитаемым CVC карты, предварительно сохранив его в защищенном месте и не писать PIN карты на ней же.
  • Как сделать цикл C# для игры?

    4evest GameDev, твои трудности связаны с тем, что ход твоих мыслей идет в неверном направлении.
    Ты думаешь о цикле, тебе нужно думать о законе. О функции, если говорить простым языком.
    Тебе нужно взять бумагу и нарисовать оси Декартовой системы координат. По одной оси отложи деления твоих "+20 в счете", по другой - деления скорости. Нарисуй в этой системе график зависимости скорости от счета. График даст тебе понимание закона изменения скорости. По этому закону ты можешь вывести функцию зависимости скорости от количества очков. Эту функцию ты можешь использовать для определения фактической скорости в любой момент времени.
    Тебе не нужен цикл, тебе нужно уметь пользоваться математикой.
  • Как отсортировать дробную и целую часть числа в C++?

    @MarkusD Куратор тега C++
    Анатолий Плешков, по аналогии с лексикографическим порядком слов.

    Используй std::modf[?] чтобы разбить число на составные части. Каждая составная часть для тебя будет буквой слова при сравнении.
    Дальше ты можешь вести сравнение между буквами одного порядка так, как это делается при лексикографическом сравнении.
    Например, посмотри как я форматы сортирую по их свойствам. Порядок сортировки там тоже является лексикографическим.
  • Statements внутри списка инициализации конструктора?

    @MarkusD Куратор тега C++
    floppa322,
    statement, indirect - это как раз те англицизмы, переведя которые на русский одним словом, только ухудшит понимание, поэтому я бы не стал это делать

    Я полностью соглашусь с res2001 . Ты не иностранец, у тебя есть Русская речь и Русский язык чтобы выражать свои мысли без языковых надстроек. А так, можно через слово, подобно мату, вставлять что-нибудь иностранное взамен родного слова.
    Но дело, конечно, твое.

    естественно может, просто предпочитаю в ооп-стиле писать )

    Только это не будет ООП-стилем. Концепт объектной ориентированности не запрещает использовать глобальные функции и не принуждает все писать только в методах.
    Если ты действительно предпочитаешь писать в стиле ООП, который оперирует сущностями, то вот подходящий пример:
    class Example
    {
    private:
        ExtremelyHeavyObject obj;
    
    public:
        Example()
        : obj{ ExtremelyHeavyObjectBuilder{}
                 .method1()
                 .method2()
                 .method3()
                 .build() }
      {
      }
    };

    Идиома называется Method chaining [?]. У ее применения есть свои особенности.
  • Statements внутри списка инициализации конструктора?

    @MarkusD Куратор тега C++
    floppa322 , есть несколько предложений по оформлению вопроса. Я, кажется, его как-то понял, но хочу устранить неоднозначности.
    Сегодня использование англиканизмов в профессиональной среде трактуется как признак низкой квалификации. Квалифицированный специалист способен объясняться исключительно терминами родного языка.
    Индирект - косвенность. Statement'ы - выражения.
    Когда человек сыпет тяжелыми на слух англиканизмами, его становится тяжело понять. Это заставляет слушателя напрягаться и нервничать. А это уже ведет к обострению общения и может быть воспринято как неуважение.

    По поводу стиля кода. Оформление, откровенно говоря, рваное. Это точно так же заставляет задумываться, вчитываться и искать. Думаю, поэтому у тебя пока еще нет ответов. Лично мне потребовалось 4 раза перечитать код чтобы увидеть в нем инициализатор. Первые три раза я видел просто неправильный синтаксис. В широкой практике инициализатор оформляется примерно схожим образом: блоком по строкам. Посмотри пример.

    По части сложных выражений для инициализации поля. Для инициализации поля ты можешь использовать функции родительского класса (даже методы, т.к. в момент инициализацтора текущего класса, экземпляр родительского класса уже инициализирован), глобальные функции или идиому IILE.
  • Ошибка компиляции для платы Arduino Uno: "CreateFile C:\Temp\arduino_build_357091: The system cannot find the file specified."?

    Алихан Мулаев , прошу повторно ознакомиться с регламентом работы сервиса и устранить нарушения П3.1, П3.4, П3.6 и П3.8 в своем вопросе.
  • Можно ли обратиться к статическому полю шаблона класса без инстанцирования шаблона?

    @MarkusD Куратор тега C++
    floppa322, хочу обратить твое внимание.
    Класс A использует regex и, чтобы написать тест на него и не ctrl + c / ctrl + v regex можно просто доступиться до публичного regex'а класса A в тесте

    "Класс A использует ..." - это уже описание решения. Решение всегда решает задачу и может быть каким угодно если удовлетворяет условиям задачи. Оно может быть неэффективным или вести к долгосрочным последствиям.
    Описывать желательно саму задачу, для решения которой "Класс A использует ...".

    Для чего тебе потребовалось описанное в вопросе поведение?

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

    Это все относится и ко второму твоему пункту. Там тоже описано решение задачи. Сама задача - это параметры конфигурирования. Тебе нужны какие-то настройки для управления поведением той или иной сущности.
    Для ее решения многие люди действительно заводят отдельный модуль с кучей констант, а потом путаются в них все время. Решение держать конфигурацию внутри типа - не самое удачное. Лучше, минимально, вынести конфиг в отдельную структуру, в которой хоть теми же самыми статическими полями все и определить именно и только для одной сущности. Суть в том, что сущность зависит от конфига, но конфиг не является неотъемлемой частью сущности. Сущностей одного типа может быть много и у каждой может быть свой конфиг. Т.е. тебе лучше сделать WorldSettings и ConnectionSettings, в которых и разместить настройки для World и Connection.
    В бизнесе этот вопрос решается через довольно сложную подсистему конфигурации, которая позволяет управлять настройками игры из самых разных мест.

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

    В этом случае вариант от Sergio является самым лучшим и чистым решением.
  • Можно ли обратиться к статическому полю шаблона класса без инстанцирования шаблона?

    @MarkusD Куратор тега C++
    floppa322 , шаблон класса - это, прежде всего, шаблон типа. Это еще не тип и работать с шаблоном как с типом невозможно. Шаблон всегда требуется инстанцировать, результатом инстанцирования шаблона типа всегда будет тип, у которого уже можно получить доступ к полям и функциям.

    добавляя "фиктивные" шаблонные параметры как-то слишком костыльно

    После инстанцирования шаблона с параметрами, статическое поле MEMBER_TO_BE_ACCESSIBLE_OUTSIDE будет принадлежать только пространству инстанцированного типа. Иными словами, для каждой уникальной комбинации аргументов шаблона MEMBER_TO_BE_ACCESSIBLE_OUTSIDE будет иметь свой уникальный адрес размещения.

    Расскажи что ты хочешь сделать. Для чего тебе потребовалось описанное в вопросе поведение?
  • Является ли хорошей практикой использование Stack Trace библотек в дебаг сборке?

    @MarkusD Куратор тега C++
    floppa322,
    само наличие блоков try/catch, насколько мне известно, немного замедляет приложение

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

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

    @MarkusD Куратор тега C++
    kokapuk, тебе нужно пример кода прокси? Бесплатно такие масштабные работы обычно не предоставляются. Переходи на фриланс и оформляй задачу.
  • Является ли хорошей практикой использование Stack Trace библотек в дебаг сборке?

    @MarkusD Куратор тега C++
    floppa322,
    Извиняюсь за глупый вопрос, но откуда у пользователя возьмётся корректный стек вызовов?

    Вот эта самая Backward-cpp и ей подобные выдачу коллстека и сделают корректной. Современная инструментация отладки позволяет опознать фрагменты встроенного кода и правильно оформить коллстек для выдачи.

    если приложение чисто серверное, то бояться декомпиляции не стоит?

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

    на практике в релизных сборках устанавливают ли колбэки на системные исключения, вроде сегфолта, с последующим выводом стека вызовов?

    На практике уважающее себя ПО в руках пользователя работает под присмотром брокера статистики и отладки. Качественного ПО в наши дни нет. Всякая программа у пользователя упадет. Важность в том, чтобы падение это донести до разработчиков в максимально информативном виде.
    Брокер ведет программу до ее падения. В момент падения брокер перехватывает управление на себя, формирует крашдамп, формирует отправку на сервера разработчиков, уведомляет пользователя о том, что программа упала и разработчики уже в курсе, после чего мирно кладет программу до нового запуска.
    И как же иначе брокер, будучи внутри процесса ПО, может все это выполнить, как не через обработчики сигналов и прерываний? А никак.
    И на производительности конкретно установка обработчиков тоже не сказывается.
  • Является ли хорошей практикой использование Stack Trace библотек в дебаг сборке?

    @MarkusD Куратор тега C++
    floppa322, подводные камни - это возможность полной декомпиляции твоей программы по ее отладочным меткам. В наши дни эта проблема решается обрезанием отладочной информации в процессе релиза для пользователей. В результате пользователи при падении видят только отчет со стеком вызовов и все. Это действие - джентельменский минимум уважающего себя производителя ПО.

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

    Проблем с регистрацией событий нет. Это - штатный функционал стандартной библиотеки. Сегодня довольно много инструментов (вроде GeForce Experience, Logitech G Hub или Realtek Sonic, т.е. вещи все знакомые) для своей работы используют куда более изощренные методы встраивания в исполняемый код процессов пользователя.
  • Как скомпилировать программу через командную строку используя только возможности виндоус?

    Void59,
    хотел переводить

    Этот процесс называется трансляцией.
    В какой язык ты хотел транслировать код своего языка - не важно. Твой вопрос имеет отношение только к трансляции.
    Правильно указанные теги помогают тебе решить свой вопрос. Неправильно указанные теги могут привести к удалению вопроса (по нарушению П3.1 регламента).
  • Header-only. Страдает ли размер бинарника?

    @MarkusD Куратор тега C++
    Sergio, нужно не думать, а знать документацию.

    Чем характерно определение метода по месту его объявления в классе? Тем, что метод автоматически будет иметь спецификатор inline.
    Чем характерно определение шаблонов функции или внешнее определение методов шаблона? Тем, что определение должно быть доступно из всех мест инстанцирования шаблона. Если шаблон функции инстанцируется в разных модулях трансляции, ему место только в одном из заголовков.
    Чем характерно определение функции в заголовке? Тем, что функция должна иметь спецификатор inline или static. Иначе попытка трансляции кода выявит нарушение ODR. Инстанцирование шаблона функции или метода будет помечено как взятое оттуда, где оно определено.

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

    Спецификатор inline[?] дает пометку слабого внешнего связывания для любой сущности. Что константа или глобальная переменная, что функция или метод (даже статический), помечаются как сущности с внешним связыванием, которое не нарушает ODR в случае если все определения цели связывания во всех модулях трансляции являются полностью одинаковыми. Если хоть одно определение цели связывания отличается - будет нарушение ODR.
    Ликер подберет самое первое определение и встроит его в бинарный код. После этого линкер будет только проверять другие встреченные определения на предмет соответствия первому, а линковку кода будет производить только относительно первого встреченного определения.
    Этим и характерна пометка функций, методов или констант с переменными как inline.

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

    @MarkusD Куратор тега C++
    cppcat , я правильно понимаю что процесс целевого приложения находится точно в том же окружении, в той же системе и на том же компьютере, что и браузер, с которым работает пользователь?

    Думаю, от тебя разъяснения по этим подробностям ждут.