首页 > 解决方案 > 将指向函数的指针从类转换为普通指针的问题

问题描述

我不明白问题是什么。

字段.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)

标签: c++callback

解决方案


checkCoord() 函数是非静态的,即它要求“this”是一个字段。因此它与add_unit 的参数不兼容。如果您没有在 checkCoord() 中引用任何字段成员,请尝试:

private:
    static bool checkCoord(int x, int y){...};

推荐阅读