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

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

Войти
Регистрация
Восстановить пароль
 
vol4ok
Сообщений: n/a
#1

межклассовые колбеки - C++

10.04.2010, 02:18. Просмотров 681. Ответов 1
Метки нет (Все метки)

есть 2 класса А B, нужно сделать так чтобы класс В мог регистрировать свой метод у класса А в качестве колбека, а класс А соответственно вызывать этот метод по событию. При этом класс В может быть произвольный, его структура неизвестна для класса А. Как это грамотно сделать? помогите плз. Вариант с бустом не предлагать, он мне известен, но хотелось бы найти решение в рамках STL.

Возможно это можно как-то сделать с помощью std::function? но скомпилять мне пока не удалось, не понимаю как правильно регистрировать метод класса и потом его вызывать...



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
typedef std::function<void (int)> Callback;
 
//класс А
class EventHandler{
protected:
    Callback cb;
    int cx;
 
public:
    void reg_callback(int a, Callback b) { cb = b; cx = a; };
    void call_callback() { /* cb(cx)??? */ };
};
 
//класс B
class SomeClass{
public:
    void on_event(int k) {std::cout <<  k << std::endl;}
    void set_event(EventHandler* eh) { /* ??? в этом месте вообще непонятно что надо писать */ }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2010, 02:18     межклассовые колбеки
Посмотрите здесь:

Как организовать простенькие межклассовые связи в С#? - C#
У меня есть простенькая игра на начальной стадии разработки -- тетрис. Уже есть функция, которая формирует и окрашивает(пока только)...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pigah
12 / 12 / 2
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
10.04.2010, 10:13     межклассовые колбеки #2
Используй наследование
Ответ Создать тему
Опции темы

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