• Как сделать, чтобы пользователь должен был удерживать палец на экране и перемещать вверх, вниз?

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

    maaGames
    @maaGames
    Egorithm, Внутри методов класса this-> всегда есть неявно, но можно указывать и явно, для более лучшего документирования кода. Или если имя аргумента метода совпадает с именем члена класса (но это уже проблемы именования).
    Суть такого написания в том, чтобы не копировать реализацию из базового класса в дочерний. Так что может визуально выглядит не очень красиво и понятно, но это лучше, чем дублирование кода. Это относится не только к оператору присваивние, а к абсолютно всем виртуальным функцям. По возможности нужно избегать дублирование кода (упрощает отладку и дальнейшую поддержку кода), а вот такой "странный" вызов сильно упрощает эту задачу.
  • Наследование. Каким образом вызывается operator=() через оператор разрешения контекста?

    maaGames
    @maaGames
    Egorithm, > С другой стороны, там написано, что это необходимо делать только если и базовый, и производный класс используют динамическое выделение памяти. Но я догадываюсь, что такое нужно делать просто при явном определении operator=().

    Подозреваю, что там речь идёт о необходимости самостоятельно писать operator=(), если ВНУТРИ объекта происходит динамическое выделение памяти, потом учто компилятор сам не может знать, как сравнивать объекты с указателями. Т.е. речь не о способе создания самого объекта, а о способе создания его членов.
    В любом случае, если создаёшь конструктор копирования - создаёшь оператор присваивания. Если создаёшь оператор присваивания - создавай и конструктор копирования.
  • Наследование. Каким образом вызывается operator=() через оператор разрешения контекста?

    maaGames
    @maaGames
    Egorithm, Это никак не связано с динамическим выделением памяти.
    class A
    {
        A(int);
    };
    
    class B
    {
       B( int b )
       :   A(b)
      {}
    };

    Например, вот. В конструкторе указывается конструктор базового класса. Примерно то же самое делается для методов. Условно выражаясь, происходит вызов метода через "this-родительского-класса" с отключенным полиморфизмом, т.е. вызовется именно метод базового класса, а не перегруженный метод.
    Есть и ещё более запутанные приёмы. Например:
    class A
    {
      virtual void func();
    };
    
    class B : public A
    {
      virtual void func();
    };
    
    class C : public B
    {
      virtual void func()
      {
         ... // какой-т код
    
        A::func();
    
        ... /// ещё какой-то код
      }
    };

    В методе func класса С вызывается реализация метода func из класса А, при этом реализация из класса B не вызывается.
  • Есть ли способ динамической загрузки библиотеки?

    maaGames
    @maaGames
    Евгений Иванович, Ну так используй кросплатформенный код работы с файловой системой. Скачать бибилотеку на диск - не проблема. Загрузить динамически библиотеку с диска - не проблема. Получить адрес функции в загруженнйо библиотеке - не проблема.
    Учитыая, что для работы с сетью всегда приходится использовать либо API конкретной системы, либо используя кросплатформенную обёртку (типа буста), то не понимаю, откуда взялась проблема работы с диском.
  • Эффективный алгоритм для двустороннего поиска?

    maaGames
    @maaGames
    laniminel, B-tree только на скорость поиска влияют, не на использование памяти (если не ошибаюсь, конечно). Раз в первую очередь акцент на эффективность, то нужно сбалансированное дерево строить, чтобы время поиска было log(N). В сортированном массиве тоже сложность поиска log(N) и 500 мегабайт это небольшой размер для современных компьютеров. Так что я бы протестировал и вариант с массивами. Там и служебной информации гораздо меньше. Получается, сейчас ~200 байт на узел дерева, а ведь в нём хранятся как минимум два указателя на дочерние узлы, может ещё указатель на родительский узел. Т.е. 3*8=24 байта служебный. Это 10% от занятой памяти. Так что с массивами вместо 450 будет 400. Хотя, между 400 и 450 никакой разницы в 2019 году.
  • Эффективный алгоритм для двустороннего поиска?

    maaGames
    @maaGames
    res2001, Вообще, пока не назван используемый язык, я что-то передумал говорить о производительности :) Мало ли, как там контейнеры в испльзуемом языке реализованы.
    По идее, индексированный доступ (вернее, прямой доступ по указателю) будет всегда быстрее косвенного доступа из дерева. Опять же, в зависимости от реализации, хранятся ли данные прям в узле дерева или в узле указатель на данные...
    В любом случае, я бы предпочёл два бинарных дерева.
  • Нужно ли учить графическую часть в winapi?

    maaGames
    @maaGames
    Ну ка, запили "Hello World!" на UWP для Windows 7 :)
  • Можно ли как-то ускорить публикацию в Play Market?

    maaGames
    @maaGames
    4DKZ, Сложна. Такое лучше спросить у тех.поддержки ГуглПлея.
  • Можно ли Встроить QT dialog в MFC CDialog?

    maaGames
    @maaGames Автор вопроса
    Adamos, Короче, короткий ответ: Нет, простым способом так встроить QT нельзя. :)
  • Можно ли Встроить QT dialog в MFC CDialog?

    maaGames
    @maaGames Автор вопроса
    Adamos, С тем же успехом я могу написать свою Виндоус, потому что мне не нравится MFC...
    Если я правильно догадываюсь, мне нужно будет из CDialog обрабатывать только функции изменения размера, перемещения, видимости и удаления. Если говорить очень грубо, то приложение не будет обращаться к диалогу, но из диалога будут меняться данные в документе.
  • Можно ли Встроить QT dialog в MFC CDialog?

    maaGames
    @maaGames Автор вопроса
    Adamos, Я могу делать что угодно (в пределах разумного) при загрузке плагина. Т.е. я могу инициализирвоать хоть QT, хоть что-то ещё, если требуется. При загрузке плагина вызывается функция инициализации, в которой я могу сделать всё, что мне требуется для инициализации плагина. В том числе создать свой диалог и добавить его в имеющуюся палитру. И этих диалогов будет несколько десятков и в любое время их может быть от нуля штук создано во вкладках этой палитры..
  • Можно ли Встроить QT dialog в MFC CDialog?

    maaGames
    @maaGames Автор вопроса
    Adamos, Я похож на человека, который задаёт вопрос, зная на него ответ?

    Вот я могу любое HWND окно встроить в любое HWND окно. Я сликом плохо знаю QT, чтобы знать, могу ли я QT-окно встроить в любое HWND окно? Т.е. создать CWnd, в котором будет указатель на QT окно положением которого упарвляет этот CWnd. Не знаю, возможно ли такое с испоьлзованием QT.
  • Можно ли Встроить QT dialog в MFC CDialog?

    maaGames
    @maaGames Автор вопроса
    Adamos, Мне не нужен просто диалог, мне нужен диалог, встроенный в интерфейс. В интерфйсе есть палитры с табами, где каждый таб это специальный класс-палитра, который унаследован от CDialog. У палитр docking, автосворачивание с экрана и прочие удобства. Но всё это делается автоматически основной программой, в плагине реализуется логика простого немодального CDialog, который вставляется в эту палитру в виде вкладки.
  • Портятся файлы на SSD?

    maaGames
    @maaGames
    Перед вышеперечисленным нужно вытащить SATA кабель, подуть диску в щелочку и обратно кабель вставить. То же самое на материнке. У меня такое было из-за плохо вставленного SATA.
  • Как сделать idea-подобный поиск?

    maaGames
    @maaGames
    pqgg7nwkd4, На ум приходит разбивка вводимого слова по словарю, собранному и слов в имеющемся идентификаторе. Но тут и конфликты могут быть и пользователи любят писать с ошибками. Сразу какого-то действительно работающего решения в голову не приходит...
    С другой строны, теперь кажется, что 120 мегабайт не так уж и много, браузеры гигабайты хавают только рекламным ибаннерами.)
  • Как сделать idea-подобный поиск?

    maaGames
    @maaGames
    pqgg7nwkd4, Не правильно поняли. Уточняю.
    Пользователь вводит "номерКо". Программа находит все идентификаторы для "ном+ко: "номерКомнаты", "номенклатураКолошей" и т.д. Потом уже по этому списку ищет не по трём первым символам КАЖДОГО слова, а по всем символам. Либо по словам, либо по вхождению введённой части в полный идентификатор.
  • Как сделать idea-подобный поиск?

    maaGames
    @maaGames
    pqgg7nwkd4, В качестве оптимизации можно брать не более трёх первых символов в слове. Уже при наборе по всем потенциально подходящим идентификаторам (их уже будут сотни, а то и всего десятки вариантов) проверять по всем символам.
    Ну и понятно, что занимаемая память и скорость поиска будут зависить от способа хранения данных, т.е. от служебных расходов на хранения каждой пары и от того, будет ли идентификатор храниться непосредственно для каждой пары или будет отдельная таблица идентификаторов и для аббревиатур будет указываться индекс идентификатора... Много чего по мелочи можно приделать всякого.
  • Как сделать idea-подобный поиск?

    maaGames
    @maaGames
    pqgg7nwkd4, Это не совсем перебор, но, в принципе, да. Вариантов будет много "для человека", "для компьютера" вариантов будет не много, буквальнов 20-50 раз больше, чем в программе есть идентификаторов, т.е. не намного больше.
  • В чём кроссплатформенность JAVA?

    maaGames
    @maaGames
    SaddledSharp, А ты напили программу, показывающую диалог выбора файла на диске. Не ручками путь до файла писать, а именно GUI. Всё, это ответ на твой вопрос. Java абстрагируется от ОС и железа, а на С+ придётся использовать кросс-платформенные библиотеки, которые абстрагируют тебя от ОС и железа и там уже не отделаешься 500 строками кода.