0
我正在试图制作一个函数指针数组来缓解一些否则会是噩梦的代码。我想使用一组函数,如下所示。函数指针指向非静态函数
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
它的工作原理,如果我定义功能是静态的,但我不能这么做,因为它会对我的设计产生太大的影响。我该如何解决这个问题?
这很棒。请记住,“表明课程”不仅仅是一种美容语法。这种指针是一种与普通函数指针完全不同的野兽。这两者不可互换,也不兼容。希望你不需要他们。 – AnT
你说得对。我编辑了答案,使其更具信息性。 – broncoAbierto