沉默流星 发表于 2025-7-21 21:31:08

这种回调如何封装

问题如下:
在封装时碰到结构体中的成员类型,为回调。
这种如何封装呢?

static/image/hrline/1.gif
typedef struct FMOD_CREATESOUNDEXINFO
{
FMOD_SOUND_NONBLOCK_CALLBACK   nonblockcallback;typedef FMOD_RESULT (F_CALL *FMOD_SOUND_NONBLOCK_CALLBACK)(FMOD_SOUND *sound, FMOD_RESULT result);
static/image/hrline/1.gif
这样封装不对


static/image/hrline/1.gif






24: 错误: 无法将数据类型"长整数"转换到"FMOD.音频.回调类型"


hcwanz 发表于 2025-7-21 21:45:04

强转一下指针类型就行了吧

沉默流星 发表于 2025-7-21 22:15:15

hcwanz 发表于 2025-7-21 21:45
强转一下指针类型就行了吧

不行的,试过

Xelloss0618 发表于 2025-7-21 22:19:47

1、封装成属性写,参数类型用变整数,方法里强转
2、封装成嵌入式方法,参数用@匹配方法

沉默流星 发表于 2025-7-21 22:25:19

Xelloss0618 发表于 2025-7-21 22:19
1、封装成属性写,参数类型用变整数,方法里强转
2、封装成嵌入式方法,参数用@匹配方法 ...

能否给写个例子

Xelloss0618 发表于 2025-7-21 22:58:42

<火山程序 类型 = "通常" 版本 = 1 />

类 FMOD_CREATESOUNDEXINFO <公开 @别名 = "FMOD_CREATESOUNDEXINFO" @别名类型 = 本地结构>
{
    方法 回调 <公开 静态 属性写>
    参数 本结构 <类型 = FMOD_CREATESOUNDEXINFO>
    参数 函数指针 <类型 = 变整数 注释 = "用\"取静态方法地址\"">
    {
      @ @<本结构>.nonblockcallback = (FMOD_SOUND_NONBLOCK_CALLBACK)@<函数指针>;
    }

    方法 置回调 <公开 静态 @嵌入式方法 = @"\"\"\"">
    参数 本结构 <类型 = FMOD_CREATESOUNDEXINFO>
    参数 回调函数 <@匹配方法 = "回调函数模板">
    {
      @ @<本结构>.nonblockcallback = &@<回调函数>
    }

    方法 回调函数模板 <静态 类型 = FMOD_RESULT @视窗.前缀文本 = "@F_CALL">
    参数 sound <类型 = FMOD_SOUND指针>
    参数 result <类型 = FMOD_SOUND指针>
    {
      变量 返回值 <类型 = FMOD_RESULT>
      返回 (返回值)
    }

    #
}

页: [1]
查看完整版本: 这种回调如何封装