我不明白问题是什么。
Field.h:
class Field : public Snake
{
private:
bool checkCoord(int x, int y){...};
};
Snake.h:
class Snake
{
protected:
void add_unit(bool (*)(int, int));
};
以及当我尝试使用它们时:
Snake::add_unit(&checkCoord);
编译器显示此错误:
field.cpp:26:29: error: cannot convert 'bool (Field::*)(int, int)' to 'bool (*)(int, int)'
26 | Snake::add_unit(&checkCoord);
| ^~~~~~~~~~~
| |
| bool (Field::*)(int, int)
checkCoord()函数是非静态的,即,它要求“ this”是一个字段。因此,它与add_unit的参数不兼容。如果您没有在checkCoord()中引用Field的任何成员,请尝试:
private:
static bool checkCoord(int x, int y){...};