c++ - 结构指针函数指向其他结构的其他函数

标签 c++ struct c++14 function-pointers

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

例子:

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/

相关文章:

c++ - 将本地 Openssl 链接到 Nodejs C++ 插件

创建二维结构

c++ - 如何检查两个矩阵是否相同?

c++ - 发出 std::async 任务完成的信号

c++ - 两个结构的顺序

c++ - C onnx header 找不到 OrtEnv 定义

c - 如何使用 __declspec( dllexport/import ) 从 DLL 导出/导入 C 结构/到控制台应用程序

c++ - 在 C++14 编译器中使用 Boost

c++ - OpenGL 上基于 vector 的字体

C# <-> C++ : Marshaling an [In, Out] 包含 Char[] 的结构