对不起,如果这是一个愚蠢的问题,但我不能理解下面这段代码:
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的实例?
我真的不明白......
答案 0 :(得分:4)
所以... pthis被转换为myStruct类型的静态指针?
static_cast
与static
变量无关。在Regular cast vs. static_cast vs. dynamic_cast中解释了static_cast
可用于将隐式转换反转为void指针。
基本上foo指向myStruct,无法访问myStruct的实例?
不,foo
没有“指向”任何东西。 foo
是绑定到pThis
解除引用的对象的引用。 foo
可以像(*pThis)
一样调用成员方法。