crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

lanz
  опции профиля:
сообщение 26.3.2013, 13:27
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


В общем суть такова, есть некоторое количество(N) классов, наследующих от общего предка.
У предка есть интерфейс управления для обработки команд.
Раскрывающийся текст
class Base {
    public:
        virtual void Command (QString, QVariant);
};

Естественно конкретные реализации по разному обрабатывают команды.
В первом приближении примерно так:
Раскрывающийся текст
class DerivedN {
    public:
        virtual void Command (QString, QVariant) {
            switch (QString) {
                ...
                ...
            }
        };
};

Естественно это не очень красиво, поэтому сразу второе приближение:
Раскрывающийся текст
class DerivedN {
    public:
        virtual void Command (QString, QVariant) {
            this->map[QString] (QVariant);
        };
};

В map хранятся указатели на функции члены. Естественно мне захотелось вынести все это в базовый класс.
Раскрывающийся текст
class Base {
    public:
        void Command (QString, QVariant) {
            if (this->processors.contains (QString)) {
                this->processors[QString] (this, QVariant);
            };
        };
    protected:
        typedef std::function<void (Base*, QVariant)> CommandProc;
        QMap<QString,CommandProc> processors;


Загвоздка в том что мы не можем добавлять функции-члены наследующих классов в список. Можно конечно обойтись списком свободных функций,
но интересно, как описать Map который будет содержать функции члены не только базового но и производных классов?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
lanz
  опции профиля:
сообщение 27.3.2013, 14:43
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Графики кривых, 5-10К точек, хотелось бы хотябы 10-15 в секунду, локально естественно. Не локально я думаю раз-два в секунду где-то.
XML/JSON/сжатие-растяжение кажется тяжеловато будет.

Я тут глядел на камеры которые через Ethernet работают. Там все здорово аж до 30 fps, но они свои драйвера рекомендуют ставить и выделенную сетевуху, так что мне кажется становится тесновато для просто лобового подхода.

Надо пробовать в общем :lol:

Городить последнее дело, понятно, вот если взять готовый...
Как кстати насчет Dbus/COM, ни у кого не было опыта использования?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 27.3.2013, 19:37
Сообщение #3


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(lanz @ 27.3.2013, 17:43) *
Как кстати насчет Dbus/COM, ни у кого не было опыта использования?

c COM одно время дело имела - это было наследние тех, кто писал проект до меня. не понравилось просто ужасно. может, на С# или каком-нить вижуал бейсике это выглядит проще, но на С++ под него писать очень сложно, особенно если ты не потребитель ресурсов, а сам что-то предоставляешь. потом, регистрация объекта - дело довольно геморное. юзать COM можно, но удовольствия это не доставляет.
мне вообще кажется, что последние годы мелкософт хочет отойти от COM и "неуправляемых" (native) приложений. я даже подозреваю их в том, что они из-за этого не хотят развивать и поддерживать компилятор С++. может, это паранойя, но как-то так это выглядит.

Сообщение отредактировал Iron Bug - 27.3.2013, 19:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- lanz   Архитектурный вопрос   26.3.2013, 13:27
- - Влад   Вот так и описать. А заполнение этого мэпа происхо...   26.3.2013, 13:37
- - lanz   ЦитатаВот так и описать. Не выходит. Цитатаerror C...   26.3.2013, 14:10
|- - Влад   Цитата(lanz @ 26.3.2013, 15:10) Так поним...   26.3.2013, 14:21
- - lanz   Downcast-ить то его можно, только проблема в том ч...   26.3.2013, 14:59
- - lanz   Сделал так: Раскрывающийся текстclass Base : p...   26.3.2013, 16:16
- - Алексей1153   lanz, все названия функций - в текстовом виде, все...   26.3.2013, 18:04
- - Iron Bug   Вот, по-быстрому написала, как в С++11 это сделать...   26.3.2013, 22:43
- - lanz   ЦитатаВот, по-быстрому написала Настоящая черная ...   27.3.2013, 8:39
|- - Iron Bug   Цитата(lanz @ 27.3.2013, 11:39) Насколько...   27.3.2013, 10:53
- - Алексей1153   Цитата(lanz @ 27.3.2013, 11:39) стати нас...   27.3.2013, 13:21
- - lanz   Цитатаделай для этого отдельный быстрый метод без ...   27.3.2013, 13:45
- - Алексей1153   lanz, а где, что и в каких объёмах будет гоняться ...   27.3.2013, 13:51
- - lanz   Графики кривых, 5-10К точек, хотелось бы хотябы 10...   27.3.2013, 14:43
|- - Iron Bug   Цитата(lanz @ 27.3.2013, 17:43) Как кстат...   27.3.2013, 19:37
- - Алексей1153   lanz, ну тут, само собой, лучше оставить лазейку д...   27.3.2013, 18:21


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 9.6.2025, 15:40