• Как вывести значение указателя без иннициализации?

    maaGames
    @maaGames
    Погроммирую программы
    Если запускаешь в дебаге, то указатели инициализированы нулями, то есть и в консоль будут выведены нули и при попытке туда записать значение будет падение программы - запрещено записывать в адреса от 0 до какого-то там значения зарезервированного. Возможно, преподователь хочет услышать именно то, что программа падает.
    В релизе в указателе может быть любой набор битов и там уже можно считать везением, если программа сразу упадёт из-за ошибки доступа к памяти.
    В целом, это UB и так делать не надо.
    Ответ написан
    Комментировать
  • Как исправить ошибку vector subscript out of range?

    maaGames
    @maaGames
    Погроммирую программы
    Запускаешь под отладчиком, включив перехват исключений. В той строчке, где будет выход за границы массива, будет брошено исключение и отладчик на этой строчке остановится и сможешь посмотреть конкретное место и что в стеке лежит.
    А ещё, в коде логическая ошибка в RLE кодировании-декодировании: недопустимы последовательности символов более 9 штук подряд. Если будет 10 и больше символов, то твой алгоритм поломается.
    Ответ написан
    Комментировать
  • Как документировать C++ проект?

    maaGames
    @maaGames
    Погроммирую программы
    Но ведь в доксигене есть поддержка автогенерации некоторых из UML диаграм. Остальные можно нарисовать в любом ПО и в виде картинок подключить в тексте программы, чтобы доксиген их в документацию добавил. Там же не только комментарии к фукнциям можно делать, но и любой текст форматированный создать, просто это менее удобно делается, по сравнению с описаниями функций.
    Ответ написан
    Комментировать
  • Почему не работает Qt linguist с диалогами?

    maaGames
    @maaGames Автор вопроса
    Погроммирую программы
    Сломан сам Qt, жаловаться бесполезно...
    linguist из сборок 5.15.2 и 6.2.4 работают корректно (на рутрэкере только эти две версии есть).
    Ответ написан
    Комментировать
  • Как подключить библиотеку с++(возникает ошибка хедер сломан)?

    maaGames
    @maaGames
    Погроммирую программы
    В дополнительные зависимости надо указывать lib файлы, а не хэдеры. Ты перепутал местами настройки. Хэдеры (путь до папки, а не сами файлы) надо задать в блоке где AdditionalIncludeDirectories. Соответсвтено в коде останется #include "BaseTerminal.h", если в настройках задаш путь "D:\Projects\TerminalHelper\TerminalHelper\"
    Ответ написан
    22 комментария
  • Почему пишет неопределенный тип?

    maaGames
    @maaGames
    Погроммирую программы
    Судя по вот этому: "EventArgs.h", в вопросе показан код из срр файла. А в другом срр файле происходит создание объектов и там включен только "EventArgs.h" с forward declaration этих классов. Собственно, об этих классах там известно только то, что они есть и можно только указатель на них создать и всё. Определение класса олжно быть в хэдере и этот хедер надо включить во все файлы, которые этот класс используют.
    И сделай виртуальный деструктор. Но это уже следующая ошибка, про которую спросишь.
    Ответ написан
  • Тонкости Компиляторов. Почему в классах с++ не требуется объявление функции до вызова?

    maaGames
    @maaGames
    Погроммирую программы
    Думаю, основная разница в том, что методы класса гарантированно находятся в том же самом файле в пределах скобочек. А вот просто функции могут быть где угодно в других файлах, которые ещё не обработаны.
    Ответ написан
    Комментировать
  • Как правильно инициализировать константы в namespace в *.h *.cpp?

    maaGames
    @maaGames
    Погроммирую программы
    Почитай про ключевое слово extern при объявлении переменных, послеэтого всё получится.
    Ответ написан
  • Как использовать класс объявленный в другом файле?

    maaGames
    @maaGames
    Погроммирую программы
    Сразу скажу, что это плохой код и делать так не надо.
    Однако, отвечая на вопрос: весь этот код написан в .h файле. Нужно сделать .cpp файл, в котором будет сздана переменная logg. Сейчас объявлено, что переменная есть, но самого объекта нет.
    Ответ написан
    4 комментария
  • Является ли безопасным отнять от указателя 1 и итерироваться по массиву [1,N], а не [0, N-1]?

    maaGames
    @maaGames
    Погроммирую программы
    Работай с массивом не напрямую, а через функцию. Ещё лучше, убери массив в класс.
    double Get(double * arr, int index)
    {
          assert( index > 0 );
          return arr[index - 1];
    }


    Или, ещё проще. Создавай массив на 1 элемент больше и игнорируй наличие нулевого элемента.
    Ответ написан
    6 комментариев
  • Как обойти все исполнения программы?

    maaGames
    @maaGames
    Погроммирую программы
    Мьютексы, семафоры, критические секции. То есть добавь объекты синхронизации, чтобы гарантировать, что объекты изменяются упорядоченно и только одним потоком в единицу времени.
    Ответ написан
    4 комментария
  • Как растянуть рабочую поверхность во весь экран интерактивного дисплея?

    maaGames
    @maaGames
    Погроммирую программы
    У меня обатная проблема, монитор 1440р, а планшет 1080р. Если не использовать "расширение работчего стола", то разрешение уменьшается до меньшего из двух.
    Есть обходной манёвр при помощи настройки видео-драйвера (для nvidia, про других производителей не уверен). Нужно для экрана с меньшим разрешением создать собственное разрешение, равное разрешению второго экрана. Это разрешение будет больше физически возможного для экрана. После этого можно включить дублировние экрана и на обоих будет одна и та же картинка, но на меньшем экране картинка будет уменьшена с потерей качества (слегка размытая). В моём случае размытость получается на планшете, но это становится проблемой только при рисовании однопиксельных линий, в целом для рисования это не сильно мешает. И всегда можно посмотреть на основной монитор для пиксель-пёрфект.
    В вашем случае мыльцо будет на экране ноутбука, поэтому повышеное разрешение лучше включать только когда рисуете на планшете, чтобы в остальное время картинка не была замыленной.

    вот тут в панели управления nvidia это делается. Для других производителей не знаю как. Есть программные решения, клонирующие и масштабирующие картинку, но я ими не пользовался.
    64b221d56db39915801733.png
    Ответ написан
    Комментировать
  • Какие есть подходы к реализации подключения различных модулей для приложения?

    maaGames
    @maaGames
    Погроммирую программы
    1. Реши вопрос о том, как будет выполняться оплата и как "программа" узнает о том, была ли оплата. Иначе один человек покупает модули, вкладывает на торренты и всё, второй человек уже не покупает :) Скорее всего, купив подписку на систему оплаты и проверки лицензии, ты сразу купишь систему защиты программы от взома (бюджетную денуво).
    2. Решив проблему оплаты и лицензирования ты автоматически решаешь вопрос разделения модулей. Не важно, будут это отдельные dll, скачиваемые по запросу или всё в одном ехе собрано - это уже будет разграничиваться системой защиты кода программы. А как конкретн осделать - как тебе будет удобнее.
    То есть бесполезно просто выносить фукнционал в dll и посылать её по почте сделавшим донат в донэйшеналертс. Нужно комплексное решение. Есть бесплатные варианты, от хакеров-первокурсников могут защитить.

    Если речь про мобилки, то есть стандартные средства конкретной платформы для "внутриигровых платежей" и средства проверки того, что было оплачено, а что нет.
    Ответ написан
    Комментировать
  • Почему arw формат, сохраненный в psd, начинает весить в 5-7 раз больше?

    maaGames
    @maaGames
    Погроммирую программы
    Склей слои, удали фрагменты, которые за границей кадра. Сохрани в jpg :)

    6000*4000 пикселов, 16 битный цвет, 2 слоя. Вполне нормальный размер у файла.
    Ответ написан
  • Почему вылетает исключение при удалении объекта?

    maaGames
    @maaGames
    Погроммирую программы
    Нет виртуального деструктора у IContainer, а удалять пытаешься полиморфно.
    Ответ написан
    Комментировать
  • Как можно реализовать движение объекта в 2d пространстве к еде с помощью нейросети?

    maaGames
    @maaGames
    Погроммирую программы
    Вознаграждение за "еду" не забыл добавить? Ближайшую еду не надо передавать, достаточно координаты любой еды или "всех едов". На самом деле, нужно всё игровое поле передавать или регион, в котором находится объект. Ведь движение будет не в пустом пространстве, в итоге надо будет обходить препятствия и "врагов".
    Штраф за каждое передвижение, большое вознаграждение за кушание еды. И учить, учить, учить... Нейросеть сама научится выбирать ближайшую цель и двигаться к ней.
    Например задать "здоровье" объекта равное числу клеток на игровом поле. За каждый шаг здоровье снижается на 1 и объект умирает, когда здоровье равно нулю. Такой подход гарантирует, что объект не сможет топтаться на одном месте и ходить кругами, а выживут только те, кто или будет бегать по всему полю и случайно наткнётся на еду и те, кто будет целенаправленно бежать к еде. В процессе отбора последние, скорее всего, останутся последними выжившими.
    Ну и множитель корректировки не дожен быть слишком большим или слишком маленьким, количество слоёв должно быть не слишком маленьким и не слишком большим, топология сети должна быть... какая-то.
    Ответ написан
    Комментировать
  • Можно ли оплатить кабинет разработчика чужой картой?

    maaGames
    @maaGames
    Погроммирую программы
    У меня счёт для выплат подтверждался "пин кодом", который присылался бумажным письмом на указанный адрес. Очевидно, сейчас это так же будет невозможно для жителей отменённой страны.
    Ответ написан
  • Как дамп данных windows 7 перенести на windows 10?

    maaGames
    @maaGames
    Погроммирую программы
    клонировать диск со старого ПК на новый (при этом будет в елости стары йдиск, если что-то пойдёт не так и можно будет повторные попытки делать, без риска потери данны).
    После клонирования диска сделать обновление системы до Вин10.
    Ответ написан
    Комментировать
  • Сайт с 'www' не работает, а без открывается на ура, почему?

    maaGames
    @maaGames
    Погроммирую программы
    Вообще не знаток проблемы и не уверен, что правильно понял вопрос, но для себя подобную проблему решил через файл .htaccess.
    Так же сделал редирект с http на https.

    Редирект с www на без www
    
    RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
    RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
    
    Редирект без www на www
    
    RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
    RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
    Ответ написан
    Комментировать
  • Как можно усложнить программу?

    maaGames
    @maaGames
    Погроммирую программы
    Ну элементарно же!
    Везде, во всех циклах и аргументах фукнций, вместо константных ссылок передавай по значению и будет тебе копирование массивов.
    Везде вместо [] используй at() - в нём есть проверка границ, очень чутка медленнее работает, чем [].
    " if (!visited[w])" убери проверку и всегда путь ищи, это прям радикально замедлит.
    Там же не path модифицируй, а на каждой итерации создавай копию и, если pop_back не требуется, то копируй временный путь в path.
    Ответ написан
    Комментировать