Что делает ret reinterpret_cast?

#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 правильно, как передается результат выполнения функции?

1

Решение

Является ли Dynamic () выполнением функции или конструкцией без аргументов в стеке объекта?

Это должно быть последнее, потому что тип возвращаемого значения определяемой функции также Dynamic,

Что такое ключевое слово ret?

Это не ключевое слово, это параметр, передаваемый макросу. Поиск Google обнаружил эти два случаи применения этого макроса:

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

В первом случае функция reinterpret_casts результат (inObj)->func() вызов функции к List_obj *, Чтобы код работал, Dynamic должен иметь неявный конструктор преобразования, который принимает List_obj *,

Во втором случае результат reinterpret_cast отбрасывается и создается по умолчанию Dynamic() объект возвращается.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]