我正在尝试创建一个函数指针数组来减轻一些本来是噩梦的代码。我想使用一组函数,如下面的函数。
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
如果我将函数定义为静态,它可以工作,但我不能真的这样做,因为它会对我的设计产生太大的影响。我该如何解决这个问题?
答案 0 :(得分:0)
由于SO显示在右边的建议,我找到了答案。
鉴于我想使用指向Grid类的成员函数的指针,我必须在typedef声明中指定它。
typedef void(Grid::*FunctionPointer)(Point2, Point2, Point2, Point2);
注意之前缺少的 Grid :: 。