typedef недействительным (__thiscall* LPVOIDPROC) (недействительным);
class ClassA
{
LPVOIDPROC m_pProc;
void SetProc(LPVOIDPROC pProc) { m_pProc = pProc; }
void OnSomeEvent() { m_pProc(); }
}
class ClassB
{
ClassA* pCA;
void Proc() { /* ... */ }
void Init()
{
// Assume pCA != NULL
pCA->Set((LPVOIDPROC)&ClassB::Proc); // error C2440
}
}
Как избавиться от этой ошибки C2440: «приведение типа»: невозможно преобразовать из «void (__thiscall ClassB::*) (void)» в «LPVOIDPROC»? Я не хочу ограничивать подпись LPVOIDPROC только классом B. Это должен быть любой класс, и указанный процесс не должен быть статическим.