関数ポインターの配列を作成して、悪夢のようなコードを軽減しようとしています。次のような一連の関数を使用したいと思います。
void drawNothing(Point2, Point2, Point2, Point2);
関数ポインターの型を定義しました。
typedef void(*FunctionPointer)(Point2, Point2, Point2, Point2);
そして、ポインター自体を格納する配列。
FunctionPointer drawMSCase[16];
問題は、スロットの 1 つに関数を割り当てようとすると、次のようになることです。
drawMSCase[0] = &Grid::drawNothing;
次のエラーが表示されます
error: cannot convert 'void (Grid::*)(Point2, Point2, Point2, Point2)' to 'Grid::FunctionPointer {aka void (*)(Point2, Point2, Point2, Point2)}' in assignment
関数を静的として定義すると機能しますが、設計に大きな影響を与えるため、実際にはできません。どうすればこれを解決できますか?