Задать вопрос
  • Почему нельзя возвращать объект по значению в non-const &?

    @res2001
    Бобби Шифер, Бобби Шифер, У автора по ссылке 3 примера. В первых двух ссылка не используется, там RVO.
    Qubc,
    error

    Да, точно. Я кроме того что убрал const сделал еще и rvlaue ссылку:
    struct s && ref = f();
  • Почему нельзя возвращать объект по значению в non-const &?

    @res2001
    Очень круто.

    RVO во всей красе. Отключите эту оптимизацию и получите совсем другой код.

    Почему нельзя возвращать объект по значению в non-const &?

    Да вроде можно. Убрал const в вашем примере и все нормально.

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

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

    @res2001
    sirberwulf,
    нет ни тарифов повышающих скорость ни другого провайдера

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

    @res2001
    sirberwulf,
    В моем провайдере работают как раз дураки

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

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

    @res2001
    Еще можно попытаться проковырять дырку в своем NATе с помощью UPnP.
  • Для чего нужны спецификаторы в C?

    @res2001
    Это такие азы, что об этом написано в любой книжке по Си. И документации полно в интернете.
    https://en.cppreference.com/w/c/io/fprintf
  • Возможно ли автоматическое добавление переменной компилятором в namespace?

    @res2001
    dominy,
    моги ли я както отделить две переменные с одинаковым названием но разными типами.

    Ну и делайте как задумали. Одна переменная в одном namespace, другая в другом.

    Но в целом, если обе переменные описывают с разных сторон одну и ту же сущность, то давать переменным одинаковые имена это плохая идея. Сделайте класс/структуру, содержащую оба поля с разными именами.
    struct EntitiesCount_s {
      EntitiesCount_s() :
          adr(processManager.getModuleBaseAddress((WCHAR*)L"GameAssembly.dll")),
          val(processManager.readMemory<int>(adr))
      {};
      uintptr_t adr;
      int val;
    } EntitiesCount;
  • Определить что пришло на сервер - пакет или сегмент (udp/tcp)?

    @res2001
    BadCats,
    но я думал, что порт независим от протокола и если верить Википедии

    Вы не правильно интерпретировали вики. Порты как раз строго привязаны к протоколу (TCP или UDP).
    Порты есть и у UDP и у TCP. Но это независимые множества портов. Ничего не мешает одной программе открыть порт с одним числовым номером как для UDP так и для TCP и это будут разные порты и разные открытые сокеты. Именно этот факт отражен в вики, где указано одно числовое значение порта для обоих протоколов. Вы можете делать точно так же.
  • Не работает RDP после перезагрузки сервера. Как исправить?

    @res2001
    не может подключиться

    Если есть какие-то ошибки, которые выдаются при попытке подключения, то их то же не плохо было бы увидеть.
  • Сломал терминал командой echo, как восстановить?

    @res2001
    Если ты покажешь исходники, то кто-нибудь сможет подсказать.
  • Какие есть библиотеки для запуска ELF и .so файлов под Windows?

    @res2001
    Думаю, так это работать не будет. И в обратную сторону то же не будет.
    Вы не сможете использовать в приложении под одну платформу библиотеки, написанные под другую платформу.
  • Пишу кейлоггер на c++ и встретился с ошибками. Как их пофиксить?

    @res2001
    AramBaram, Это не значит, что совет не правильный. Разбирайтесь с ошибками дальше.

    Вообще в MSVC можно использовать тип TCHAR. В зависимости от настройки проекта он будет принимать значение либо char, либо wchar_t. Так же все текстовые константы заворачивать в
    TEXT("это константа")
    Это автоматически преобразует константу либо в char, либо в wchar_t (так же как с TCHARом).
    В свойствах проекта есть настройка, что-то типа "использовать Unicode" ... не помню как она точно звучит. Вот в зависимости от этой настройки и работают вышеописанные макросы.
    Рекомендую всегда использовать Unicode.
  • Реализация memcmp без библиотек?

    @res2001
    Есть какие-то проблемы скопировать память заданного размера из одного заданного адреса в другой? Тогда возьмите учебник по Си, почитайте про указатели, адресную арифметику.
  • Как реализовать скриптинг и компиляцию игр в игровом движке с использованием c++?

    @res2001
    Anthony228357, В любом случае движок не должен ничего знать о вышестоящем уровне (хоть в первом, хоть в третьем варианте), это вообще никак с компоновкой не связано. Если вы закладываетесь на то, что движок что-то там предполагает о пользовательском коде (или будет его анализировать каким-то образом), то это гиблое дело. Движку этого не нужно.
    Пользовательский код будет знать об интерфейсе движка через файлы заголовков, где вся нужная информация для вызова методов и функций движка будет. Дальше вступают в действие наследование и виртуальные методы.

    Разве есть какой-то способ вызывать функции в файлах с описанием класса?

    Функции будут вызываться тогда, когда программа уже будет собрана и все зависимости удовлетворены. Пока вы пишите код и для компиляции достаточно информации (содержащейся в заголовках) о имени, типе возвращаемого значения и количестве и типе аргументов функций и методов.
    При компиляции любых программ на С/С++, состоящих из нескольких файлов исходного кода, компилятор ВСЕГДА компилирует файлы по отдельности. При компиляции каждого конкретного файла компилятор ничего не знает о других файлах исходного кода и он в них не заглядывает. Это не касается файлов заголовков, которые подключаются внутри компилируемого файла исходного кода, их компилятор, конечно включает в сборку.
    Только на этапе линковки полученные объектные файлы объединяются в один исполняемый файл, вот тогда линковщик и должен разрешить все зависимости. В случае второго варианта линковщик разрешит зависимости от движка, т.к. статическая библиотека движка будет участвовать в линковке. Точно так же линковщик найдет main() в статической библиотеке движка и успешно будет ее использовать.
  • Не понимаю почему не делается пуш в гит?

    @res2001
    Ogurchik-007, Написано же "Permission denied" - у вас нет прав на эту операцию. Обращайтесь в вашу школу, чтоб вам дали права, к обращению приложите этот лог.
  • Как избавиться от червя или что это за штука?

    @res2001
    Оба GUIDа из отчета связаны с Edge. Попробуйте удалить его из системы вместе с IE, если он у вас вдруг еще остался.
  • Как реализовать скриптинг и компиляцию игр в игровом движке с использованием c++?

    @res2001
    Anthony228357, Какая схема вам больше по душе ту и можно организовать.
    1. Вы можете поставлять свой движок в виде исходного кода. Тогда просто добавляете пользовательский код в сборку и можно собрать монолитный исполняемый файл или динамическую библиотеку.
    2. Если движок не хотите поставлять в исходном коде, то можете поставлять его в виде статической библиотеки и точно так же компоновать с пользовательским кодом, только движок в сборку будет добавляться на этапе линковки.
    3. Движок в виде исполняемого файла или dll. Пользовательский код собирается в одну или несколько dll. Внутри движка реализована схема загрузки пользовательских библиотек (add-on/plugin).
  • Как реализовать скриптинг и компиляцию игр в игровом движке с использованием c++?

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

    Классы могут импортироваться из DLL. Запихивать пользовательские скрипты в одну или несколько DLL - в принципе особой роли не играет. С одной DLL работать проще. Можно вообще не использовать DLL, а собирать один готовый исполняемый файл. Это все на ваше усмотрение, при правильной реализации все варианты рабочие.