Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 427
#1

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

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

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

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

Мне известно, что вроде в C# появилась поддержка механизма событий. Но я программирую на
C++
Из материалов инета на эту тему приведу цитату
"С++ не поддерживает указатели на функцию-член класса" -
но как-то это связано с этим, но не понимаю.
Если можете, поясните подробно и может с приведением несложных учебных примеров
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2011, 13:18     События в ANSI C++
Посмотрите здесь:

ANSI C - C++
Приветики ! Срочно нужно закрыть сессию,но никак не могу сделать несколько прог... помогите плиз, если не трудно =( 1.Написать...

Стандарт ANSI - C++
если использовать #include <queue> #include <vector> это уже не стандарт ANSI??

Unicode/Ansi - C++ Builder
Доброго! Скорее всего в будущем будет необходимость сделать интерфейс программы на нескольких языках "Рус, Укр, Бел". Ну в программе, все...

Раскодировка ANSI - C++
Подскажите как раскодировать ANSI. Может быть есть онлайн декодеры или что то в этом роде?

ANSI to Unicode - C++
Hi all. Вопрос к экспертам :) Хочу сохранить строку текста (кириллица) в текстовый файл. Строка в ANSI, а нужно сконвертировать в...

ANSI и UNICODE - C++
#include <iostream> #include <windows.h> using namespace std; int main(){ TCHAR j; return 0;

ANSI и DrawText - Visual C++
Вопрос, видимо, простой, но я пока не могу разобраться, что не так... Поиски по интернету решения не дали - видимо, не могу правильно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
30.06.2011, 14:04     События в ANSI C++ #2
Цитата Сообщение от 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;
}
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
30.06.2011, 15:20     События в ANSI C++ #3
Цитата Сообщение от eugrita Посмотреть сообщение
Прошу прощенья, что не очень внятно формулирую тему. Для меня это познавательный вопрос.
Меня интересует:
1)Можно ли и как в классическом C++ без всяких GUI (C++ Builder, Visual Studio)
использовать механизм событий
Можно конечно юзать собития. Event придумали (не уверен) в с++. А на чём написан C++ Bulder ? На С++

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

Мне известно, что вроде в C# появилась поддержка механизма событий. Но я программирую на
C++
Из материалов инета на эту тему приведу цитату
"С++ не поддерживает указатели на функцию-член класса" -
но как-то это связано с этим, но не понимаю.
Если можете, поясните подробно и может с приведением несложных учебных примеров
Уже asics ответил.
voral
411 / 391 / 51
Регистрация: 16.03.2008
Сообщений: 1,932
30.06.2011, 16:22     События в ANSI C++ #4

Не по теме:


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



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

 Комментарий модератора 
Уважительно относитесь к другим участникам форума.
Правила форума, п. 4.1
asics
Freelance
Эксперт C++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
04.07.2011, 15:45     События в ANSI C++ #7
Цитата Сообщение от eugrita Посмотреть сообщение
Тогда, что же в интернете писали брехню?
Просто интересно, а на каком ресурсе вы нашли эту инфу(стосовно указателя на функцию-член) ?
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
05.07.2011, 05:20     События в ANSI C++ #8
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, тоже самое что и функции обратного вызова.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
05.07.2011, 09:35     События в ANSI C++ #9
xAtom, хм, интересно. Как статическая функция Proc сможет вызвать нестатическую виртуальную функцию DlgMain::OnLeftButtonDown?
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
05.07.2011, 10:16     События в ANSI C++ #10
http://code.google.com/p/cpp-events/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2011, 11:06     События в ANSI C++
Еще ссылки по теме:

Wide <--> ansi - C++
а можно как то сконвертить один символ wide в ansi и обратно? кроме как через функции типа MultiByteToWideChar? wchar_t - 2х байтный тип,...

ANSI to UCS2 LE - C++
Здравствуйте! Столкнулся с такой проблемой: Проект на C++ генерит файлик (через ofstream). Он получается в кодировке ANSI. Чтобы...

Ansi C.функции - C++
Очень прошу,помогите плиииз....я не могу никак закрыть сессию...=( 1.Написать фунцкию char *dodaj(const char *n1,const char...

Перевод в ANSI - C++
Всем доброго времени суток! У меня следующая проблема: пишу парсер для языка html, на вход поступает файл с любым расширением (.html,...

ANSI to Unicode - C++
Всем доброго времени суток! Есть задачка преобразовать строку в cp1251 в строку в unicode и сохранить ее в файл в кодировке unicode...


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

Или воспользуйтесь поиском по форуму:
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 427
05.07.2011, 11:06  [ТС]     События в ANSI C++ #11
Да ,вот довольно много написано на rsdn
http://www.rsdn.ru/article/cpp/fastdelegate.xml
Как-то тема затрагивалась (не в контексте "событий" а в контексте call-back -функции ) и на этом форуме
www.cyberforum.ru/cpp-beginners/thread29497.html
Но все равно. Конечно надо уметь и знать случаи применения call-back функций а также знать
и уметь разрабатывать модели с событиями на простом C++
Yandex
Объявления
05.07.2011, 11:06     События в ANSI C++
Ответ Создать тему
Опции темы

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