我想知道是否可以将其他结构的函数指向一个结构:
例子:
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++ - 结构指针函数指向其他结构的其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40172529/