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

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

Войти
Регистрация
Восстановить пароль
 
atomohod
20 / 20 / 1
Регистрация: 01.04.2010
Сообщений: 57
#1

Не понимаю CALLBACK - C++

06.11.2011, 20:08. Просмотров 658. Ответов 4
Метки нет (Все метки)

Всем привет!

Помогите пожалуйста разобраться: хочу в коснтрукторе объекта передавать указатель на функцию этого объекта и потом вызывать этот 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
29
30
31
enum Errors { DivBy0, Negative };
 
 
class CalculatingError
{
 
public: 
    CalculatingError(Errors error);
    ~CalculatingError();
    void NegativeError();
    void DivBy0Error();
 
    void (*Error)(void);
}
 
CalculatingError::CalculatingError( Errors error)
{
    switch(error)
    {
    case Errors::DivBy0:
        {
            Error = (void*)DivBy0Error;
        }
        break;
    case Errors::Negative:
        {
            Error = (void*)NegativeError;
        }
        break;
    }
}
в чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 20:08     Не понимаю CALLBACK
Посмотрите здесь:

CallBack C++ - C++
Всем привет! Похожий вопрос. Нужно заюзать колбеки. Если работаю без класов т.е функция не предлежит класу то работает нормально, а...

Regex_replace с callback - C++
Возможно я плохо искал, но что-то я никак не могу понять, как в C++ правильно выполнять такую операцию: string s =...

Callback функция - C++
Простой вопрос: я правильно понял, сallback-функцией просто называется функция, к которой обращаются по указателю(обычно указатель на нее...

CALLBACK, void * и волокна - C++
В общем пытаюсь разобрать университетскую задачку. Поток main(у меня это simpleFourth) преобразует сам себя в нить, а затем создает...

Что такое CALLBACK функция...... - C++
Что такое CALLBACK функция......

Callback + switch. Break needed - C++
typedef int (*CallbackType)(); void Queue_list::add_elem(CallbackType in_key){ unit* temp = new unit; temp->key = in_key; ...

Win32 API, LRESULT CALLBACK, ошибки - C++
Помогите исправить ошибки #include<windows.h> #include<commctrl.h> const IDM_Enable_Disable=0; const IDM_Exit=1; const...

Просмотр списка с вызовом callback функции - C++
Объясните что требуется сделать плз. Нашел что такое callback функция , но как ее здесь применить? хелп.

Методы класса как callback функции - C++
Всем привет. Пытаюсь разобраться как передавать методы класса в качестве callback. Я конечно понимаю, что есть решения вроде Boost или...

callback функции и функциональные объекты в качестве параметров - C++
Всем привет. В STL есть алгоритмы, которые требуют наличия функционального объекта, например sort, а некоторые алгоритмы, такие как...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lucky_spirit
2 / 2 / 1
Регистрация: 10.05.2012
Сообщений: 45
12.06.2012, 16:11     Не понимаю CALLBACK #2
А какая хоть ошибка? Что компилятор выдает?
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
12.06.2012, 16:40     Не понимаю CALLBACK #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
25
26
27
28
29
30
31
enum Errors { DivBy0, Negative };
 
 
class CalculatingError
{
 
public:
    CalculatingError(Errors error);
    ~CalculatingError();
    void NegativeError();
    void DivBy0Error();
 
    void (CalculatingError::*Error)(void);
};
 
CalculatingError::CalculatingError( Errors error)
{
    switch(error)
    {
    case DivBy0:
        {
            Error = &CalculatingError::DivBy0Error;
        }
        break;
    case Negative:
        {
            Error = &CalculatingError::NegativeError;
        }
        break;
    }
}
Lucky_spirit
2 / 2 / 1
Регистрация: 10.05.2012
Сообщений: 45
12.06.2012, 18:58     Не понимаю CALLBACK #4
Nick Alte, можете мне, как новчику, посоветовать какую-то хорошую статью по Callback-ам? Я разобрался с тем, как они происходят. А вот практическое применение? Можно какие-то легкие примеры для новичков?
На данный момент работаю "джуниором" и в одном из проектов нужно использовать Callback-функции. Это связано с сокетами, чтением/записью по ним. И вот как callback-функции применяются для отслеживания событий я еще не понял.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.06.2012, 19:07     Не понимаю CALLBACK #5
Поищите в сети и почитайте статьи по паттернам проектирования:
Комманда (Command)
Наблюдатель (Observer)
Можно вот в этой книжке: http://ru.wikipedia.org/wiki/Design_Patterns
Самый простой пример:
Когда пишут ГУИ приложение, часто на нажатие кнопки нужно как-то реагировать.
В ГУИ библиотеке есть класс кнопка, которая умеет рисовать себя, обрабатывать всякие системные вызовы и в том числе умеет узнавать, что ее нажали. Но что делать при этом нажатии такой класс не знает. А знает тот, кто эту кнопку создал. Вот для этого в эту кнопку добавляется специальный коллбек, команда или называйте как хотите. Так вот когда кнопка понимает, что ее нажали, она вызывает команду, которую в нее добавили. Ну и в результате выполняются всякие нужные действия. Т.е. кнопка отслежывает событие того, что ее нажали и вызывает в ответ на это зарегестрированный в ней коллбек.
В описанной схеме кнопка является наблюдателем за собитыем "нажатие". И когда нужное событие происходит, происходит вызов заданной комманды (это может быть как коллбек, так и другие реализации)
Yandex
Объявления
12.06.2012, 19:07     Не понимаю CALLBACK
Ответ Создать тему
Опции темы

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