Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для atomohod
20 / 20 / 3
Регистрация: 01.04.2010
Сообщений: 57

Не понимаю CALLBACK

06.11.2011, 20:08. Показов 1270. Ответов 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;
    }
}
в чем ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2011, 20:08
Ответы с готовыми решениями:

For_each и аргументы callback-функции; Как передать callback'у больше одного аргумента
Изучаю контейнеры и алгоритмы stl по Майерсу . С непривычки слегка охренел и запутался в них . В общем есть у меня простой вызов...

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

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

4
2 / 2 / 0
Регистрация: 10.05.2012
Сообщений: 45
12.06.2012, 16:11
А какая хоть ошибка? Что компилятор выдает?
0
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
12.06.2012, 16:40
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;
    }
}
0
2 / 2 / 0
Регистрация: 10.05.2012
Сообщений: 45
12.06.2012, 18:58
Nick Alte, можете мне, как новчику, посоветовать какую-то хорошую статью по Callback-ам? Я разобрался с тем, как они происходят. А вот практическое применение? Можно какие-то легкие примеры для новичков?
На данный момент работаю "джуниором" и в одном из проектов нужно использовать Callback-функции. Это связано с сокетами, чтением/записью по ним. И вот как callback-функции применяются для отслеживания событий я еще не понял.
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
12.06.2012, 19:07
Поищите в сети и почитайте статьи по паттернам проектирования:
Комманда (Command)
Наблюдатель (Observer)
Можно вот в этой книжке: http://ru.wikipedia.org/wiki/Design_Patterns
Самый простой пример:
Когда пишут ГУИ приложение, часто на нажатие кнопки нужно как-то реагировать.
В ГУИ библиотеке есть класс кнопка, которая умеет рисовать себя, обрабатывать всякие системные вызовы и в том числе умеет узнавать, что ее нажали. Но что делать при этом нажатии такой класс не знает. А знает тот, кто эту кнопку создал. Вот для этого в эту кнопку добавляется специальный коллбек, команда или называйте как хотите. Так вот когда кнопка понимает, что ее нажали, она вызывает команду, которую в нее добавили. Ну и в результате выполняются всякие нужные действия. Т.е. кнопка отслежывает событие того, что ее нажали и вызывает в ответ на это зарегестрированный в ней коллбек.
В описанной схеме кнопка является наблюдателем за собитыем "нажатие". И когда нужное событие происходит, происходит вызов заданной комманды (это может быть как коллбек, так и другие реализации)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.06.2012, 19:07
Помогаю со студенческими работами здесь

CallBack
Можно ли в андроиде создать свои CallBack функции? Если можно, то киньте какой нибудь пример на одном активити и классе потомке.

Callback
как использовать модуль для обратной связи ?

Callback
Доброго времени суток! Хотел спросить может кто знает. Вообщем есть приложение которое сохраняет картинки. Нужно не дожидаясь ответа...

Callback функции
Есть запрос вроде этого: somevar.select(data, function(response) { // callback code. }); Как отсюда вытащить данные...

CallBack функция
Шалом, пагни. Может кто объяснить, что в данном коде передается callback-ом... aa: function(a, b, c, d) { d = d ||...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru