【问题标题】:typecasting a pointer with static_cast<>使用 static_cast<> 对指针进行类型转换
【发布时间】:2014-09-02 11:08:40
【问题描述】:

如果这是一个愚蠢的问题,请原谅,但我无法理解以下代码:

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

我真的不明白...

【问题讨论】:

标签: c++ pointers casting


【解决方案1】:

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

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

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

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

【讨论】:

  • 所以 foo 是一个引用,用来调用 myStruct 的成员函数。并且感谢 static_cast void 指针 pthis 可以用作任何类型的指针?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 2021-08-25
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
相关资源
最近更新 更多