• Нету прав что делать?

    @dima20155
    you don't choose c++. It chooses you
    Попробуй не subprocess('cmd'), а subprocess('sudo cmd')
    Вообще нужно посмотреть какие права на файл у пользователя и, соответственно, иметь это в виду при выполнении программы.
    Здесь достаточно подробно описано что каждая буква означает и почему их 9, а также как поменять права на файл/папку
    https://www.computerhope.com/unix/uchmod.htm
    Ответ написан
  • Сложно ли создать тг бота на c++?

    @dima20155
    you don't choose c++. It chooses you
    Отличается все прежде всего тем, что написание такого бота потребует чуть больше усилий в отличии от классического бота на python как минимум из-за меньшей популярности С++ в данной сфере. Судя по официальному сайту есть несколько библиотек для С++ для работы с телеграм API (https://core.telegram.org/bots/samples). Хотя вы всегда можете отправлять HTTP запросы напрямую с помощью какой-нибудь либы или совсем без неё.

    Но если вы ищите прежде всего видео о том как написать/воспользоваться той или иной либой на С++, то спешу вас огорчить: все что находится за пределами stl/boost/qt/sfml/sdl и ещё некоторого количества либ/фреймворков требует от вас чтение документации и, иногда, исходников.

    Сама программа (и её разработка) в случае С++ будет отличаться лишь, возможно, большей сложностью.
    Самая первая задачка, с которой вы столкнетесь - это собрать библиотеку и все зависимости. Одна из готовых библиотек использует следующий набор зависимостей:

    CMake
    Boost
    OpenSSL
    ZLib
    Libcurl (optional unless you want to use curl-based http client CurlHttpClient).

    И каждая библиотека за собой может тянуть ещё зависимости.
    Вот, например, installation notes для OpenSSL
    Это не всегда сложно, особенно для популярных библиотек, но требует время, а иногда и настройку/допиливание под свой тулчейн.
    Ответ написан
    Комментировать
  • Как сделать ползунок SFML?

    @dima20155
    you don't choose c++. It chooses you
    Идейно слайдер и есть кнопка с двумя триггерами - кнопка была нажата, отпущена.
    Между нажатием и отпусканием кнопки вы отслеживание положение мышки и заполняете шкалу/перемещаете слайдер.
    Вот пример, который можно взять за основу. Есть и другие. Также легко найти на гитхаб.
    https://github.com/abodelot/sfml-widgets
    Ответ написан
    Комментировать
  • Как присвоить динамическому массиву типа void* значение в Си?

    @dima20155
    you don't choose c++. It chooses you
    Во-первых, malloc возвращает void *, поэтому приводить ничего не нужно.

    value[1] = 10; // Ошибка
    *(value + 1) = 10; // Ошибка

    Данные выражения вызывают ошибку потому что sizeof(void) не определен.
    https://stackoverflow.com/questions/1666224/what-i...
    Вы не можете скопировать массив не зная размер его элемента и количество элементов или исходный размер массива в байтах.

    Собственно, потому memcpy и требует одним из параметров размер.
    Ответ написан
    Комментировать
  • Происходит ли нарушение инкапсуляции, если реализация хранится в .h-файлах?

    @dima20155
    you don't choose c++. It chooses you
    Нарушением инкапсуляции это довольно сложно назвать, ибо приватные функции все ещё остаются приватными с точки зрения других классов. Сокрываете вы реализацию методов класса от других сущностей в вашем коде, а не от программиста (если я правильно понял причину по которой вы решили, что это нарушение инкапсуляции).
    Мне нравится метод организации данного кода следущим образом:

    Foo.h
    template <typename T>
    struct Foo
    {
        void doSomething(T param);
    };
    
    #include "Foo_impl.h"


    Foo_impl.h
    template <typename T>
    void Foo<T>::doSomething(T param)
    {
        //implementation
    }


    Код украл отсюда
    https://stackoverflow.com/questions/495021/why-can...
    Ответ написан
    1 комментарий
  • Конвертизация скрипта .py в приложение?

    @dima20155
    you don't choose c++. It chooses you
    Попробуй
    python -m auto_py_to_exe

    Галочка с PATH.
    https://youtu.be/IU4-19ofajg?t=193
    Ответ написан
    Комментировать
  • Как исправить ошибку при инициализации статического указателя на класс?

    @dima20155
    you don't choose c++. It chooses you
    В Qt есть специальный механизм для передачи данных между классами - сигналы и слоты.
    Без конкретного кусочка кода не очень понятно в чем ошибка. Возможно, вы не объявили переменную
    static MainWindow* pMainWindow;
    внутри тела класса
    Ответ написан
    1 комментарий
  • Почему в Java изменение интерфейса базового класса посредством модификации сигнатуры разрешено?

    @dima20155
    you don't choose c++. It chooses you
    А вы попробуйте в С++ реализации добавить спецификатор override к методу и поймёте что sound не переопределен. Полагаю, аналогичное поведение и в java.
    Ответ написан
    Комментировать
  • Как продвигаться дальше?

    @dima20155
    you don't choose c++. It chooses you
    Гуглите "Programming language roadmap" и вперед.
    Любите книги - аналогично есть много книг как по самому С++ (как от создателя языка, так и от признаных экспертов). Также легко найти множество книг и по фреймворкам/библиотекам на любой вкус, важно лишь понять что нравится (web/графика/сеть, а может что-то ещё)
    https://salmer.github.io/CppDeveloperRoadmap/
    https://roadmap.sh/cpp

    Ну и по классике, если хотите научиться разговаривать на английском - говорите. Хотите научиться разрабатывать ПО на целевом языке - разрабатывайте pet (а может и opensource?) проекты.
    Как пример
    А вот ещё
    Ответ написан
    2 комментария
  • Как в ировом движке на C++ распаралерить функции Update и Render?

    @dima20155
    you don't choose c++. It chooses you
    Это классическая задача читателей-писателей, способы решения этой задачи легко гугляся. Если вы хотите сделать функцию update потокобезопастной, то можете использовать любые доступные методы синхронизации. В данном случае нет серебряной пули и необходимо выбирать способ синхронизации самому. Вот пара простейших идей:

    - Сделайте переменные, изменяемые в методе Update типа atomic.
    - Сделайте доступ к данным через мьютекс (что в вашем конкретном примере не совсем эффективно, но очень просто в реализации).
    - Если у вас предполагается лишь 1 поток (полагаю, что в данной задаче использование большего числа потоков не актуально), который будет обрабатывать функцию Update, то в начале функции вы можете сохранить все модифицируемые переменные (поля объекта) в локальные переменные и в конце функции взять мьютекс и сохранить значение локальных переменных в поля объекта.

    Также интересно имеет ли смысл просчитывать физику объектов без ее отрисовки? Если данные физики качающего маятника используются лишь для отрисовки его на экране, то смысла в распараллеливании, насколько я понимаю, не очень уж много.
    Ответ написан
    1 комментарий
  • Какой выбрать движок для карточной онлайн игры?

    @dima20155
    you don't choose c++. It chooses you
    Вам вполне подойдёт движок общего назначения. Вот для юнити есть уже готовые ассеты/скрипты для подобного рода игр.
    + Выбирая специализированный движок вы будете много страдать из-за слабой поддержки/малого количества пользователей.

    Вот пример. Стоит лишь поискать.
    https://www.google.com/url?sa=t&source=web&rct=j&u...
    Ответ написан
    Комментировать
  • Почему русские буквы не выводятся в C++?

    @dima20155
    you don't choose c++. It chooses you
    Потому что кириллица кодируется минимум 2 байтами.
    Вам нужна длинная строка, которая основана на wchar.

    https://stackoverflow.com/questions/402283/stdwstr...
    Ответ написан
    Комментировать
  • Не зачитываются очки, проблема в коде?

    @dima20155
    you don't choose c++. It chooses you
    Очевидно, вам нужно задебажить этот кусочек кода и посмотреть почему же у вас левый край спрайта трубы больше, чем левый край птицы.
    #check the score
        if len(pipe_group) > 0:
            pipe = pipe_group.sprites()[0]
            if bird_group.sprites()[0].rect.left > pipe.rect.left and bird_group.sprites()[0].rect.right < pipe.rect.right and not pass_pipe:
                pass_pipe = True
            if pass_pipe and bird_group.sprites()[0].rect.left > pipe.rect.right:
                score += 1
                pass_pipe = False


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

    Также я не увидел кода, который удаляет уже пройденные трубы, что странно.
    Ответ написан
    Комментировать
  • Как писать на c++ в годот?

    @dima20155
    you don't choose c++. It chooses you
    C++ не основной язык для Godot, но есть вот такое расширение, чтобы писать на С++.
    https://docs.godotengine.org/en/stable/tutorials/s...
    Выберите правильную версию godot и следуйте инструкции. Она оочень подробная + есть несколько видео на известной площадке, где также рассказывают как использовать С++.
    Ответ написан
    3 комментария
  • Правильно ли реализовано делигирование конструктора?

    @dima20155
    you don't choose c++. It chooses you
    Если вы хотите, чтобы color и isVertical имели определенные значения - инициализируйте. Компиляторы не гарантируют, что инициализируют целочисленные значения именно нулями (хотя такое часто встречается). По некоторым style гайдам считается плохой практикой объявлять переменные без присвоения им какого-либо значения.
    Ответ написан
    Комментировать
  • Почему bind tkinter не видит функцию-обработчик?

    @dima20155
    you don't choose c++. It chooses you
    А у вас есть такая функция?
    У вас есть метод класса self.printer
    К тому же вам нужно передавать указатель на саму функцию, а не её вызов, т.е. self.printer, а не printer()
    Ознакомьтесь с ссылками ниже.
    https://python-course.eu/tkinter/events-and-binds-...
    https://stackoverflow.com/questions/17979019/bindi...
    Ответ написан
    1 комментарий
  • Как сохранить изображение через приложение на Flask в pythonanywhere?

    @dima20155
    you don't choose c++. It chooses you
    Захости сайт на полноценном Linux сервере :)
    + может в бесплатном тарифе у них нет такой возможности.
    + есть heroku, можно его попробовать
    Ответ написан
    3 комментария
  • Как сделать чтобы значение при выборе варианта из первой функции передавалось во вторую?

    @dima20155
    you don't choose c++. It chooses you
    Верните из функции значение и передайте его в качестве аргумента в другую функцию:
    def foo(g):
        if g == 3:
            g = 1
        elif g % 2 == 0:
            g = 10
        return g
    
    def bar(g):
        print(g)
    
    g = foo(1)
    bar(g)


    Если вы имеете в виду какое-то другое поведение, то уточните/переформулируйте вопрос.
    Ответ написан
    2 комментария
  • Правильно ли я понимаю правила arithmetic conversions?

    @dima20155
    you don't choose c++. It chooses you
    Да, тип будет именно таким.
    Чтобы самостоятельно увидеть вывод типа, который вывел компилятор Scott Meyers предлагает намеренно создать ошибку конвертации типа и посмотреть что же компилятор написал.
    https://godbolt.org/z/6bobqTG58
    Ответ написан
    1 комментарий
  • C++ qt, как исправить no declaration matches '...'?

    @dima20155
    you don't choose c++. It chooses you
    Ошибка означает, что в заголовочном файле у вас нет объявления метода void on_Dds_button_clicked() класса MainWindow.
    Наверное, у вас есть объявление только void on_Ds_button_clicked().
    Вот похожий вопрос на stackoverflow.

    P.S. Не испытывайте судьбу - не пиши длинные названия функций, которые отличаются только 1 буквой.
    Ответ написан
    Комментировать