Нет;у вас есть две проблемы:
Функция указателя на член имеет неправильный тип и не будет привязываться к (&testClass::testFunction)
.
У указателя объекта был удален тип.Вы можете разыграть его с void*
обратно на testClass*
, если знаете, что это такое, но тогда вам бы никогда не понадобилось, чтобы оно было void*
, верно?
В целомкомбинация магии, такой как лямбда и std::function
, была бы намного лучше.
Вот немного магии:
int main()
{
testClass instance(3);
std::function<void(void*, int)> f = [](void* instancePtr, int _num) {
static_cast<testClass*>(instancePtr)->testFunction(_num);
};
void* instancePtr = &instance;
f(instancePtr, 42);
}
Хотя ваши варианты действительно зависят от того, что вы пытаетесь сделать.