C++指向全局函数的类成员指针

C++ class member pointer to global function

本文关键字:成员 指针 函数 全局 C++      更新时间:2023-10-16

>我想要一个类,它的成员有一个指向函数的指针

下面是函数指针:

typedef double (*Function)(double);

下面是一个符合函数指针定义的函数:

double f1(double x)
{
    return 0;
}

下面是类定义:

class IntegrFunction
{
public:
    Function* function;
};

在主函数的某个地方,我想做这样的事情:

IntegrFunction func1;
func1.function = f1;

但是,此代码不起作用。

是否可以将指向全局函数的函数指针分配给类成员,如上所述?还是必须更改函数指针定义中的某些内容?

谢谢

替换这个:

class IntegrFunction
{
public:
    Function* function;
};

有了这个:

class IntegrFunction
{
public:
    Function function;
};

您的 typedef 已经创建了一个指向函数的指针。声明Function* function会创建一个指向函数的指针。

只需替换

Function* function;

Function function;

你声明变量为 Function* function ,但 typedef Function已经是指针的 typedef。因此,函数指针的类型仅为Function(不带 *)。

替换

typedef double (*Function)(double);

typedef double Function(double);

以类型定义函数类型。然后,您可以在使用它时编写*

您需要

使用 address-of 运算符来获取标准 C++03 中的函数指针。

func1.function = &f1;