函数指针指向非静态函数

时间:2013-11-01 14:29:00

标签: c++ arrays function-pointers

我正在尝试创建一个函数指针数组来减轻一些本来是噩梦的代码。我想使用一组函数,如下面的函数。

void drawNothing(Point2, Point2, Point2, Point2);

我已经为函数指针定义了一个类型。

typedef void(*FunctionPointer)(Point2, Point2, Point2, Point2);

一个用于存储指针的数组。

FunctionPointer drawMSCase[16];

问题在于,当我尝试将一个功能分配给其中一个插槽时,如此

drawMSCase[0] = &Grid::drawNothing;

我收到以下错误

 error: cannot convert 'void (Grid::*)(Point2, Point2, Point2, Point2)' to 'Grid::FunctionPointer {aka void (*)(Point2, Point2, Point2, Point2)}' in assignment

如果我将函数定义为静态,它可以工作,但我不能真的这样做,因为它会对我的设计产生太大的影响。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

由于SO显示在右边的建议,我找到了答案。

鉴于我想使用指向Grid类的成员函数的指针,我必须在typedef声明中指定它。

typedef void(Grid::*FunctionPointer)(Point2, Point2, Point2, Point2);

注意之前缺少的 Grid ::

相关问题