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

时间:2011-05-14 21:55:26

标签: c++ class function-pointers global

我希望有一个类作为成员指向函数的指针

这是函数指针:

typedef double (*Function)(double);

这是一个适合函数指针定义的函数:

double f1(double x)
{
    return 0;
}

这是课程定义:

class IntegrFunction
{
public:
    Function* function;
};

在主要功能的某个地方我想做这样的事情:

IntegrFunction func1;
func1.function = f1;

但是,这段代码不起作用。

是否可以为类成员分配一个指向全局函数的函数指针,如上所述?或者我必须在函数指针定义中更改某些内容吗?

谢谢,

5 个答案:

答案 0 :(得分:9)

替换它:

class IntegrFunction
{
public:
    Function* function;
};

用这个:

class IntegrFunction
{
public:
    Function function;
};

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

答案 1 :(得分:4)

只需替换

Function* function;

Function function;

答案 2 :(得分:2)

您将变量声明为Function* function,但Function typedef已经是指针的typedef。所以函数指针的类型只是Function(没有*)。

答案 3 :(得分:0)

替换

typedef double (*Function)(double);

通过

typedef double Function(double);

键入dede函数类型。然后,您可以在使用时编写*

答案 4 :(得分:-3)

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

func1.function = &f1;