其他分享
首页 > 其他分享> > c-struct指针函数指向其他struct的其他函数

c-struct指针函数指向其他struct的其他函数

作者:互联网

我想知道是否可以将其他结构的功能指向一个结构:

例:

typedef struct
{
    int func(int z)
    {
        return z * 2;
    }
} sta;

typedef struct
{
    int(*this.func)(int);
} stah;


int main()
{
    sta sa;
    stah sah;

    sah.func = &sa.func;

    return 0;
}

这可能在结构中吗?

解决方法:

func的声明应如下所示:

int(sta::*func)(int);

或者,或者:

using my_type = int(sta::*)(int);
my_type func;

这更容易阅读:my_type是sta成员函数的类型指针的别名,该成员函数获取一个int并返回一个int.
func仅仅是类型为my_type的数据成员.

为了将指向成员函数的实际指针分配给func,您可以改为执行以下操作:

sah.func = &sta::func;

然后可以按以下方式调用它:

(sa.*sah.func)(0);

标签:c,struct,c14,function-pointers
来源: https://codeday.me/bug/20191013/1905337.html