What does ret reinterpret_cast do?


#define HX_DEFINE_DYNAMIC_FUNC0(class,func,ret) 
Dynamic __##class##func(hx::Object *inObj) 
{ 
      ret reinterpret_cast<class *>(inObj)->func(); return Dynamic(); 
}; 
Dynamic class::func##_dyn() 
{
   return hx::CreateMemberFunction0(this,__##class##func); 
}

上面的CreateMemberFunction0是一个保存函数信息的结构体。函数__##class##func可能在某个时刻被执行,其结果被传递给相关代码。然而,我对此感到困惑,因为函数的执行似乎返回了一个名为动态的函数的执行?Dynamic也是hxcpp/haxe的一个类(对于那些不熟悉的人)。

  1. Dynamic()是一个函数的执行,还是一个对象堆栈上的无参数构造?
  2. ret关键字是什么?
  3. 如果1是正确的,函数的执行结果是如何传递的?

Dynamic()是函数的执行还是对象堆栈上的无参数构造?

必须是后者,因为所定义的函数的返回类型也是Dynamic

ret关键字是什么?

它不是关键字,它是传递给宏的参数。通过Google搜索,可以找到这个宏的两个用例:

HX_DEFINE_DYNAMIC_FUNC0(List_obj,first,return)
HX_DEFINE_DYNAMIC_FUNC0(List_obj,clear,(void))

在第一种情况下,函数reinterpret_cast(inObj)->func()函数调用List_obj *的结果。要使代码工作,Dynamic必须有一个隐式转换构造函数,该构造函数接受一个List_obj *

在第二种情况下,reinterpret_cast的结果被丢弃,并返回默认构造的Dynamic()对象。

相关内容

  • 没有找到相关文章

最新更新