Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 01.04.2015, 13:10   #1
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,534
По умолчанию Указатели на функцию

Среда MS Visual C++ 2010
Приложение Windows Forms

В основной форме есть функция вида:
Код:
void Test(void(*func)(char*))
{
// some code ... 
char* txt = "hhh";
func(txt);
}
также ест функция callback
Код:
void callbackF(char* message) {	
// some code ...
}
Как передать в тестовую функцию функцию колбэка??

Если сделать так:
Код:
Test(callbackF);

Ошибка: Ошибка	2	error C3867: NGUI::Form1::callbackF: в вызове функции отсутствует список аргументов; используйте "&NGUI::Form1::callbackF" для создания указателя на член	c:\ggui\src\NGUI\Form1.h	447	1	NGUI
Если так:
Код:
Test(&Form1::callbackF);

Ошибка: Ошибка	2	error C3374: невозможно получить адрес "NGUI::Form1::callbackF", пока не будет создан экземпляр делегата	c:\ggui\src\NGUI\Form1.h	447	1	NGUI
С использованием делегата:
Код:
delegate void Del(char *s);
...

Del ^d = gcnew Del(this, &Form1::callbackF);
Test(d);

Ошибка: Ошибка	2	error C2664: NGUI::Form1::Test: невозможно преобразовать параметр 1 из "NGUI::Form1::Del ^" в "void (__cdecl *)(char *)"	c:\ggui\src\NGUI\Form1.h	447	1	NGUI

Где я что упустил то??
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 01.04.2015, 14:52   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,197
По умолчанию

Объявите callbackF как static
waleri вне форума Ответить с цитированием
Старый 01.04.2015, 14:55   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,534
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Объявите callbackF как static
Объявлял .. и тест статиком делал и колбэк ...
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование на С. Указатели на функцию Romchik1 Помощь студентам 2 15.02.2015 14:17
С++ Передача массива в функцию(указатели) Настя М Помощь студентам 0 22.05.2014 16:04
Указатели на функцию SteAlzzer Общие вопросы C/C++ 3 05.11.2011 14:16
Проблема с пепедачей аргументов в функцию (массивы + указатели) sekator Общие вопросы C/C++ 2 09.08.2010 12:03
Указатели на функцию. prikolist Общие вопросы C/C++ 9 05.06.2009 14:34


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS