[英]typecasting a pointer with static_cast<>
如果这是一个愚蠢的问题,请原谅,但我无法理解以下代码:
struct myStruct
{
static void func1(const event, void* pthis)
{
myStruct& foo = *static_cast<myStruct*>(pthis);
if(event.action != ...).... return;
if(event.action == ...) foo.func2();
}
void func2()
{}
}
所以... pthis被强制转换为myStruct类型的静态指针了吗? 这是否意味着foo属于“对myStruct的引用”类型,并且等于pthis指向的值。
本质上foo指向myStruct,而无法访问myStruct的实例吗?
我真的不明白...
所以... pthis被强制转换为myStruct类型的静态指针了吗?
static_cast
与static
变量无关。 在常规强制转换与static_cast与dynamic_cast中进行了解释,其中static_cast
可用于将隐式转换转换为void指针。
本质上foo指向myStruct,而无法访问myStruct的实例吗?
不, foo
不是“指向”任何东西。 foo
是绑定到pThis
取消引用的对象的引用。 foo
可以像(*pThis)
一样调用成员方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.