Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Winorun
38 / 38 / 4
Регистрация: 03.05.2013
Сообщений: 177
#1

Сигнал об обновлении данных - C++

14.06.2014, 07:51. Просмотров 199. Ответов 4
Метки нет (Все метки)

День добрый. Нужен совет.

Допустим у нас есть класс CS_Setting. И мы обновляем его даные в каком то модуле, допустим в майне. Как передать что данные обновленны в другие модули? Нужно что то похожее на сигналы и слоты из Qt. Тоесть при обновление данных в нутри класса вызывается связанная функция, не пренадлежащая классу.

У кого какие предложения и идее?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2014, 07:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сигнал об обновлении данных (C++):

Определить, сигнал какого цвета сигнал горит для пешеходов в этот момент. - C++
3. Работа светофора для пешеходов запрограммирована следующим образом: в начале каждого часа в течение трех минут горит зеленый сигнал,...

Проблемы: грошовая СУБД на ADODC (сигнал при обновлении, модули для запуска) - Visual Basic
Пишу сабж. Использую ADODC. Можно (и наверняка надо) переписать все с открытием рекордсета по базе прямо в коде, но: 1) лень 2) мне так...

Обновление данных в модели Linq to SQL при обновлении данных в БД - LINQ
Подскажите новичку. Есть база данных, в приложении настроена работа с БД с помощью Linq to SQL. Из приложения все работает, но когда я...

Ошибка при обновлении данных в таблице - C# ASP.NET
Пытаюсь обновить строку в таблице, у которой 6 столбцов: Код, Фамилия, Имя, Отчество, Дата рождения, Контактный телефон. { ...

Перенос данных при обновлении ЗУП с 2.5 до 3.1 - 1С
Здравствуйте. Возникла проблема при обновлении ЗУП с 2.5 до 3.1. Делаю все стандартными средствами. Выгрузка данных проходит, а при...

Ошибка при добавлении и обновлении данных - C# MVC
только недавно начала изучать mvc и создала тестовый проект, в котором изучаю все особенности. Столкнулась со сложностью, которую не могу...

4
RaiaNKnight
96 / 70 / 7
Регистрация: 29.06.2011
Сообщений: 465
Записей в блоге: 1
14.06.2014, 08:10 #2
А в других модулях какие именно объекты должны знать об обновлении данных класса CS_Setting?

Можно создать некий интерфейс и реализовать его. Вызывать метод в классе, реализующем интерфейс, чтобы обновить данные в других модулях. Тут однако неясно, что именно обновлять в других модулях? Раскройте тему подробнее.
1
Winorun
38 / 38 / 4
Регистрация: 03.05.2013
Сообщений: 177
14.06.2014, 08:27  [ТС] #3
Примерно так, но может есть более удачные мысли.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class CS_Setting{
    int d;
    void (* updateFun)();
    void updateNull(){return;}
public:
    CS_Setting(){d=0;updateFun=updateNull;}
    void setVariant(int date){d=date;updateFun();}
    int getVariant(){return d;}
    void setFunUpdate(void (*update)()){updateFun=update;}
};
 
void update(){
    //Тут обработка при получении сигнала
}
 
 
int main(int argc, char *argv[])
{
    CS_Setting a;
    a.setFunUpdate(update);
    a.setVariant(5);
    a.setVariant(5);
 
}
Добавлено через 8 минут
Задача по сути очень распространена, на Qt рещается навешиванием сигнала и припиской ему слотов. Надо при изменении настроек, эти самые настройки изменить. Например меняем количество проходов, а у нас вызывается функция и переинициализирует соответствующий класс на данное количество.

В реализации выши столкнулся с проблемой задания не одной а нескольких функций.
0
RaiaNKnight
96 / 70 / 7
Регистрация: 29.06.2011
Сообщений: 465
Записей в блоге: 1
14.06.2014, 08:58 #4
Если есть несколько разных функций update[i], то передаете массив указателей на них. При обновлении данных при помощи setVariant() в цикле пробегите по этому массиву.

Добавлено через 5 минут
Вот пример с vector и двумя функциями update:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
using namespace std;
 
void upd1() {
    cout << "UPD 1 EPTA!\n";
}
 
void upd2() {
    cout << "UPD 2 EPTA!\n";
}
 
int main() {
    vector <void (*)()> v;
    
    v.push_back(upd1);
    v.push_back(upd2);
    
    v[0]();
    v[1]();
    
    return 0;
}
Можете аналогично запилить любую другую структуру данных.
1
Winorun
38 / 38 / 4
Регистрация: 03.05.2013
Сообщений: 177
14.06.2014, 09:01  [ТС] #5
RaiaNKnight спасибо за идею, я думаю лудше подойдет список. При уничтожении объектов будет проще удалять указатели. Только мой еле соображающий мозг не может придумать как организовать вызов функций из списка

Добавлено через 1 минуту
СПАСИБО
0
14.06.2014, 09:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2014, 09:01
Привет! Вот еще темы с ответами:

Ошибка при обновлении данных в БД MySQL - C#
Доброго времени суток! Ни как не могу понять в чём ошибка, она выпадает когда данные уже введены в таблицу и после нажатия кнопки,...

Oracle + Delphi. Ошибка при обновлении данных - Delphi БД
делаю вставку строки в таблицу procedure TForm1.Button3Click(Sender: TObject); ADOQuery1.Close; ADOQuery1.SQL.Clear; ...

Отправка данных из формы при обновлении страницы - HTML, CSS
Данные из формы отправляются при обновлении страницы, как сделать так, чтобы данные отправлялись только при нажатии кнопки?

При обновлении данных слетает связь с фигурами - MS Visio
Всем привет. В Visio 2013 сделал привязку данных к фигуре. Данные подгружаются из SQL. Когда делаю привязку &quot;руками&quot;, то все нормально....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru