dynamic_cast from“void *” [英] dynamic_cast from "void *"
本文介绍了dynamic_cast from“void *”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
根据 this , void *
没有RTTI信息,因此从 void *
投射是不合法的,是有意义的。
According to this, void*
has no RTTI information, therefore casting from void*
is not legal and it make sense.
如果我没记错, void *
正在使用gcc。 dynamic_cast
If I remember correctly, dynamic_cast
from void*
was working on gcc.
您可以澄清问题。
推荐答案
dynamic_cast
只适用于多态类型,即包含虚函数的类。
dynamic_cast
works only on polymorphic types, i.e. classes containing virtual functions.
在gcc中,您可以 dynamic_cast
到: void *
但不是来自:
In gcc you can dynamic_cast
to void*
but not from:
struct S
{
virtual ~S() {}
};
int main()
{
S* p = new S();
void* v = dynamic_cast<void*>(p);
S* p1 = dynamic_cast<S*>(v); // gives an error
}
这篇关于dynamic_cast from“void *”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文