函数指针不起作用(C ++)

时间:2018-04-24 17:37:55

标签: c++ animation events function-pointers sfml

void close() {
    //game.close();
}
int main(int argc, char** argv) {
    game.display();
    game.attachEvent(Event::EventType::Closed, close());
    while (game.isOpen()) {
        game.render();
    }
    return 0;
}
  

错误:无法初始化类型' void(*)()'的参数具有类型的右值' void'      game.attachEvent(Event :: EventType :: Closed,close());

     

注意:在这里将参数传递给参数
  void attachEvent(sf :: Event :: EventType,void(*)());

为什么显示此错误?我正在尝试附加一个我可以使用function();调用的事件。作为参数,它被声明为void (*function)() 感谢。

2 个答案:

答案 0 :(得分:3)

而不是close()使用close传递它,所以game.attachEvent(Event::EventType::Closed, close)

答案 1 :(得分:2)

传递close()会调用close函数并传递void

的结果

您希望通过以下方式传递函数:

game.attachEvent(Event::EventType::Closed, close);

(注意close上没有括号)