Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2014, 08:37   #1
Celestia
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 68
Восклицание Передача указателей на функции через структуру

Здравствуйте. Я хочу передать указатели на функции через структуру, но постоянно получаю ошибку.

Имеем:

Код:
typedef void ( *fOnCloseBrowser)(int unBrowserHandle);
typedef void ( *fOnBrowserReady)(int unBrowserHandle, bool bIOFailure);
typedef void ( *fOnFinishedRequest)(int unBrowserHandle, const char * pchURL,const char * pchPageTitle);

struct сCallbacks
{
 fOnCloseBrowser OnCloseBrowser;
 fOnBrowserReady OnBrowserReady;
 fOnFinishedRequest OnFinishedRequest;
}

class cSomeClass
{
  public:
   сCallbacks callbacks;
   cSomeClass(сCallbacks cb)
   {
     callbacks = cb;
   }
   void Test()
   {
     callbacks.OnBrowserReady(3,true); // тут ошибка
   }
}

cSomeClass *foo ;

void InitCallbacks(сCallbacks cb)
{
  foo = new cSomeClass(cb);
}
p.s.: таким образом я пытаюсь передать указатели на delphi-функции в cpp код, со стороны delphi всё в порядке точно- все функции cdecl, не NULL и т.п.

Последний раз редактировалось Celestia; 17.10.2014 в 09:41.
Celestia вне форума Ответить с цитированием
Старый 17.10.2014, 09:31   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А где этим указателям хоть что-то присваивается? Какая ошибка?

Код:
cb.OnBrowserReady(3,true); // тут ошибка
А кто такой cb в функции Тест? Его там нету воопще.
p51x вне форума Ответить с цитированием
Старый 17.10.2014, 09:43   #3
Celestia
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 68
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А где этим указателям хоть что-то присваивается? Какая ошибка?

Код:
cb.OnBrowserReady(3,true); // тут ошибка
А кто такой cb в функции Тест? Его там нету воопще.
исправил, вместо cb надо callbacks. Писал по памяти код просто. Указателям присваиваются адреса функций Delphi. Ошибка AccessViolation
Celestia вне форума Ответить с цитированием
Старый 17.10.2014, 10:18   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Ставите точку останова на эту строчку, запускаете выполнение и смотрите, что там лежит.
p51x вне форума Ответить с цитированием
Старый 17.10.2014, 12:11   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

А где и как адреса берете?
waleri вне форума Ответить с цитированием
Старый 17.10.2014, 12:21   #6
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

покажите где и как вы инициализируете структуру сCallbacks
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++ не получается правильно отсортировать динамический массив указателей на структуру по номеру группы nati_94 Общие вопросы C/C++ 1 07.03.2013 09:08
Передача указателей как арг функции (C++) Djiggurdah Помощь студентам 0 25.09.2012 17:44
Массив указателей на структуру (C++) Snorlax712 Помощь студентам 3 31.03.2012 22:03
Передача указателей на массив в функцию. nibir Общие вопросы C/C++ 14 06.07.2011 13:24
Матрица указателей на структуру Roker C# (си шарп) 6 24.06.2011 16:53