нарушение доступа к памяти из статической функции обратного вызова - PullRequest
0 голосов
/ 07 октября 2011

У меня есть C ++ DLL, в которой я указываю статическую функцию в качестве обратного вызова:

static void CallBackFunc(int num);

Чтобы эта функция могла получить доступ к остальной части моего кода, у меня есть указатель на класс взаголовок:

static void* m_obj;

и в коде:

void* CPPUDlg::m_obj;

и в статической функции, которую я имею:

CPPUDlg* m_pointer = (CPPUDlg*)m_obj;

m_pointer->OnSerialMsg(num);

Это позволяет обратному вызову вызватьнестатическая функция, но когда эта функция вызывает другие функции в других классах в приложении, это приводит к нарушению доступа к памяти для любых переменных, которые не являются статическими.

Может кто-нибудь определить, что я, возможно, сделал неправильно?Нужны ли мне статические экземпляры всех моих классов или что-то в этом роде?

Спасибо!

1 Ответ

0 голосов
/ 10 октября 2011

Установлен ли m_obj для живого объекта? - Острозуб

Большое спасибо за этот комментарий.

Я проверил и забыл установить m_obj

В моей инициализации я теперь установил m_obj = this;

и все работает отлично!

Спасибо!

...