使用static_cast<>类型转换指针

时间:2014-09-02 11:08:41

标签: c++ pointers casting

对不起,如果这是一个愚蠢的问题,但我不能理解下面这段代码:

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的实例?

我真的不明白......

1 个答案:

答案 0 :(得分:4)

  

所以... pthis被转换为myStruct类型的静态指针?

static_caststatic变量无关。在Regular cast vs. static_cast vs. dynamic_cast中解释了static_cast可用于将隐式转换反转为void指针。

  

基本上foo指向myStruct,无法访问myStruct的实例?

不,foo没有“指向”任何东西。 foo是绑定到pThis解除引用的对象的引用。 foo可以像(*pThis)一样调用成员方法。