c++ - 将指向函数的指针从类转换为普通指针的问题
问题描述
我不明白问题是什么。
字段.h:
class Field : public Snake
{
private:
bool checkCoord(int x, int y){...};
};
蛇.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() 中引用任何字段成员,请尝试:
private:
static bool checkCoord(int x, int y){...};
推荐阅读
- java - 带有浮动按钮的 ScrollView
- node.js - 我如何对依赖方法进行单元测试
- excel - 查找最后一个匹配条件的数组公式
- r - 在 scale_continuous_fill() 中测试名称参数
- excel - 如何解决#Name?将 IF 逻辑与 TODAY 函数一起使用时 Excel 中的错误
- mysql - 将原始 sql 查询转换为 Django ORM
- angular - Angular HttpClient 在 POST 中使用 URL 参数
- javascript - 如何使用 Nuxt 保持 firebase-auth 刷新?
- c - 如何优化在两个缓冲区之间进行掩码的循环
- android - AndroidX 迁移问题