Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661

События в ANSI C++

30.06.2011, 13:18. Показов 2160. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу прощенья, что не очень внятно формулирую тему. Для меня это познавательный вопрос.
Меня интересует:
1)Можно ли и как в классическом C++ без всяких GUI (C++ Builder, Visual Studio)
использовать механизм событий

2)примеры моделей классов, где без событий нельзя обойтись.
Причем чтобы это были скажем не события типа ButtonOnClick и пр как в С++ Builder или VisStudio а настоящие, присутствие которых диктуется логикой модели предм области.

Мне известно, что вроде в C# появилась поддержка механизма событий. Но я программирую на
C++
Из материалов инета на эту тему приведу цитату
"С++ не поддерживает указатели на функцию-член класса" -
но как-то это связано с этим, но не понимаю.
Если можете, поясните подробно и может с приведением несложных учебных примеров
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.06.2011, 13:18
Ответы с готовыми решениями:

Обработка .txt кодировка ANSI и UTF-8 (буква "я" в ANSI воспринимается как EOF)
Есть следующий кусок кода: FILE* fp = fopen("G:\OPND1.txt", "r"); if (fp!=NULL) // если файл удалось открыть { while((ch =...

UTF8 и Ansi в Ansi
В программу на вход поступают текстовые документы с разными кодировками (UTF8 или Ansi). Определять, какая, нужно автоматически, или вообще...

Как вызвать один обработчик события в другом обработчике события?
Здравствуйте. Подскажите пожалуйста, каким образом можно вызвать информацию из одного обработчика события в другой обработчик события? ...

10
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
30.06.2011, 14:04
Цитата Сообщение от eugrita Посмотреть сообщение
С++ не поддерживает указатели на функцию-член класса
А это тогда что ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
class A{
public:
  A(int i = 0) : i_(i) {}
  int double_val() { return i_ + i_;}
  int i_;
};
 
int main(){
  int (A::*func)();//Указатель на функцию-член
  A ob(4);
  func = &A::double_val;
  std::cout << (ob.*func)() << std::endl;
  return 0;
}
0
 Аватар для Airhand
537 / 459 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
30.06.2011, 15:20
Цитата Сообщение от eugrita Посмотреть сообщение
Прошу прощенья, что не очень внятно формулирую тему. Для меня это познавательный вопрос.
Меня интересует:
1)Можно ли и как в классическом C++ без всяких GUI (C++ Builder, Visual Studio)
использовать механизм событий
Можно конечно юзать собития. Event придумали (не уверен) в с++. А на чём написан C++ Bulder ? На С++

2)примеры моделей классов, где без событий нельзя обойтись.
Причем чтобы это были скажем не события типа ButtonOnClick и пр как в С++ Builder или VisStudio а настоящие, присутствие которых диктуется логикой модели предм области.

Мне известно, что вроде в C# появилась поддержка механизма событий. Но я программирую на
C++
Из материалов инета на эту тему приведу цитату
"С++ не поддерживает указатели на функцию-член класса" -
но как-то это связано с этим, но не понимаю.
Если можете, поясните подробно и может с приведением несложных учебных примеров
Уже asics ответил.
0
3058 / 1457 / 265
Регистрация: 16.03.2008
Сообщений: 6,495
Записей в блоге: 2
30.06.2011, 16:22

Не по теме:


Брюзжание:
1 вопрос понятен, но поставлен не корректно: как могут зависеть возможности языка от используемой IDE? Писать код можно и в notepad. Другое дело используемые библиотеки классов



Если учесть, что классы в библиотеках написаны в конечном итоге на Си/Си++/asm. ТО да - можно. Достаточно написать свою версию
0
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
04.07.2011, 15:30  [ТС]
Ну к сожалению пока ответы слишком расплывчаты. Указатель на функцию член -класса есть?
Тогда, что же в интернете писали брехню?
А по поводу учебного примера модели с событиям - пока ничего. Ну ей богу, хоть из какой-нибудь
АСУ РВ - например, управление индикаторами пожаробезопасности. Но это сложно.
Что-нибудь совсем простое
0
 Аватар для Airhand
537 / 459 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
04.07.2011, 15:39
int (A::*func)();//Указатель на функцию-член
. asics же уже ответил прямо на вопрос.
Что вам ещё надо ? Уже не раз сказали, что события существуют независимо от IDE.

 Комментарий модератора 
Уважительно относитесь к другим участникам форума.
Правила форума, п. 4.1
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
04.07.2011, 15:45
Цитата Сообщение от eugrita Посмотреть сообщение
Тогда, что же в интернете писали брехню?
Просто интересно, а на каком ресурсе вы нашли эту инфу(стосовно указателя на функцию-член) ?
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
05.07.2011, 05:20
eugrita, все функции обратного вызова callback которые указывают на функцию и вызываются системными процедурами от устройств ввода это и есть события, та функция которая вызывается вне объекта-класса или функции но передётся объекту как будто у него есть своё событие. примерчик:

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
25
26
27
28
class DlgMain {
private:
  static LRESULT CALLBACK  Proc(HWND, UINT, WPARAM, LPARAM lParam) {
       ...
       WM_LBUTTONDOWN {
               POINT p = { LOWORD(lParam), HIWORD(lParam) };
               DlgMain::OnLeftButtonDown(&p);
       } break;
       ...
   }
protected:
   virtual  void OnLeftButtonDown(LPPOINT p) {}
}
 
 
// производный класс
 
class Dialog: public DlgMain {
  private:
       virtual  void OnLeftButtonDown(LPPOINT p) {
               ... Здесь уже получаем событие на левый клик мыши с координатами
       }
} 
 
// вот и класс уже имеет своё событие
int WINAPI WinMain(...) {
    Dialog dlg;
}
Вот в Managed CLR VC++ .NET есть ключевые слова для создания событий __hook, __unhook, __event, тоже самое что и функции обратного вызова.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
05.07.2011, 09:35
xAtom, хм, интересно. Как статическая функция Proc сможет вызвать нестатическую виртуальную функцию DlgMain::OnLeftButtonDown?
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
05.07.2011, 10:16
http://code.google.com/p/cpp-events/
0
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
05.07.2011, 11:06  [ТС]
Да ,вот довольно много написано на rsdn
http://www.rsdn.ru/article/cpp/fastdelegate.xml
Как-то тема затрагивалась (не в контексте "событий" а в контексте call-back -функции ) и на этом форуме
Для чего нужны callback-функции
Но все равно. Конечно надо уметь и знать случаи применения call-back функций а также знать
и уметь разрабатывать модели с событиями на простом C++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.07.2011, 11:06
Помогаю со студенческими работами здесь

Как в одном обработчике события запустить другой обработчик события
Есть список listView1, который заполняется из массива PeopleListprivate void listView1_RetrieveVirtualItem(object sender,...

Использовать обработку события по изменению данных DataGridView в обработке события сторонней кнопки
Имеется некий DataGridView, при изменении данных в определенной ячейке которого создается определенное действие, описанное в обработчике...

Почему если делегат события определен в другом классе, то не получается создать генерацию события?
В проекте №1 объявлен делегат для события: delegate void StateEventHandler(State state); А в своем проекте №2 я в классе создаю событие...

Перенос массива из класса события в другой класс события
есть вот такой код: private void button_follow_Click(object sender, EventArgs e) { if...

Для чего использовать ключевое слово event в объявлении события, если события — это те же самые делегаты
Господа, скажите пожалуйста, для чего использовать ключевое слово event в объявлении события, если события - это те же самые делегаты ?...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru