dynamic_cast of void*

Cha*_* SP 4 c++

我需要使用动态演员空*

void *target = (MYClass*)target;//I am storing initially(to implment delegate mechanism)
....
delegateClass *delegate = dynamic_cast<delegateClass*>(target);
Run Code Online (Sandbox Code Playgroud)

它给出错误无法转换void*,我不能使用下面的代码...因为它是一个委托机制

delegateClass *delegate = dynamic_cast<delegateClass*>(((MYClass*))target);
Run Code Online (Sandbox Code Playgroud)

如何获取目标类型并实现...如果我使用typeid()我可以得到类的名称但是如何在上面的等式中使用typeid而不是(((MYClass*))target).

bdo*_*lan 13

除非变量的原始类型具有vtable(即具有虚函数),否则不能使用动态强制转换.这是因为dynamic_cast需要运行时类型信息,该信息记录在vtable中; 如果缺少vtable,编译器不知道该对象是什么类型.

您应该使用虚拟析构函数声明基类,并使用指向此基类的指针而不是void *.