我希望有一个类作为成员指向函数的指针
这是函数指针:
typedef double (*Function)(double);
这是一个适合函数指针定义的函数:
double f1(double x)
{
return 0;
}
这是课程定义:
class IntegrFunction
{
public:
Function* function;
};
在主要功能的某个地方我想做这样的事情:
IntegrFunction func1;
func1.function = f1;
但是,这段代码不起作用。
是否可以为类成员分配一个指向全局函数的函数指针,如上所述?或者我必须在函数指针定义中更改某些内容吗?
谢谢,
答案 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;