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

Реализация событий в С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужен учебник по стандартным функциям/классам http://www.cyberforum.ru/cpp/thread184511.html
Нужен учебник по стандартным функциям/классам C и C++, Борланд С++ буилдер, etc на русском. Во-первых не дублируйте темы. Во-вторых разберитесь как-нибудь с транслитом. И кстати почитайте правила форума, в частности пункт 3.10
C++ Ввод зарезервированных символов ASCII Здраствуйте! Есть консольная программа(си++,ос хр)... как в консоли ввести "крякодзябы"? мне нужно ввести в консоль символы которые за таблицей ascii кодов имеют коды(dec): 181,192,202...ето символы для графики...зарезервированые... (!) мне нада ето ввести в консоли.. как нажать ети символы? я тут уже полчаса жму на клаве комбинации клавиш и никак не могу...... http://www.cyberforum.ru/cpp/thread184481.html
MPI, нахождение простых чисел C++
Здравсвуйте! Пишу программу для нахождения простых чисел. Пишу в Visual Studio 2008 на C++. Программу написал и она работает на нескольких ПК. Но проблема в том, что результаты в главный процесс возвращаются неправильно. Допустим запускаем: компьютер с главным процессом: 5 процессов компьютер раб: 5 процессов. В результате в главный файл запишутся результаты от первых 5 и только от...
C++ Как написать плагин для notepad++?
как написать плагин для notepad++? есть какой-нибудь мануал?
C++ Распознать символы с картинки (капчи) http://www.cyberforum.ru/cpp/thread183287.html
здравствуйте! вопрос такой: имеется заранее известная картинка. картинка четкая (это НЕ капча). на картинке в известных местах находятся 5 цифр. делается скриншот. необходимо по нему узнать эти 5 чисел. в какую сторону копать? есть идеи/примеры?
C++ Книга для начинающего Посоветуйте книгу для первокурсника по c++. препод посоветовал гебрерда шилдта "C++. Базовый курс". но сейчас не могу найти ее в продаже а срочно надо. посоветуйте альтернативу. http://oz.by/books/topic10111.html - вот из этих. заранее спасибо подробнее

Показать сообщение отдельно
tartikov
Заблокирован
03.11.2010, 17:29
Цитата Сообщение от sofen Посмотреть сообщение
tartikov, тут такой, на самом деле, очень важный вопрос... а как присвоить событию опять NULL ???
можно так
button->onClick = EventClick();
но тогда, при вызове приходится проверять
if(button->onClick) button->onClick(10);

Добавлено через 4 часа 35 минут
почему то в этой библиотеке у Closure нету оператора==.
если самому дописать его, то можно замутить такую штуку.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "closure.h"
#include <iostream>
#include <algorithm>
#include <vector>
 
template <class F>
class Signal
{
    typedef Closure<F> E; 
    typedef std::vector<E> EventsVector;
public:
 
    void operator+= (const E& event)
    {
        events.push_back(event);
    }
    void operator-= (const E& event)
    {
        events.erase(std::remove(events.begin(), events.end(), event), events.end());
    }
    void clear()
    {
        events.clear();
    }
 
    template<class A0>
    void operator()(const A0& a0)
    {
        for(EventsVector::iterator i = events.begin(); i != events.end(); ++i)
        {
            (*i)(a0);
        }
    }
    template<class A0, class A1>
    void operator()(const A0& a0, const A1& a1)
    {
        for(EventsVector::iterator i = events.begin(); i != events.end(); ++i)
        {
            (*i)(a0, a1);
        }
    }
    /* и так далее для стольки аргументов, сколько нужно*/
private:    
    EventsVector events;
};
 
 
class Form
{
public:
    void out1(int value) 
    { 
        std::cout << "out1 "<< value << std::endl;
    }
    void out2(int value) 
    { 
        std::cout << "out2 "<< value << std::endl;
    }
};
 
int main(int argc, char* argv[])
{
 
    Form form;
    Signal<void(int)> s;
    s += CLOSURE(&form, &Form::out1);
    s += CLOSURE(&form, &Form::out2);
    s(10);
    
    s -= CLOSURE(&form, &Form::out1);
    s(20);
    
    s.clear();
    s(30);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru