将指针从函数转换为从类到普通指针的问题

问题描述 投票:1回答:1

我不明白问题是什么。

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)
c++ callback
1个回答
0
投票

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

private:
    static bool checkCoord(int x, int y){...};
© www.soinside.com 2019 - 2024. All rights reserved.