Указатель на функцию не работает (C ++) - PullRequest
0 голосов
/ 24 апреля 2018
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 голосов
/ 24 апреля 2018

Передача close() вызывает функцию закрытия и передает результат, равный void

Вы хотите передать саму функцию с помощью:

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

(Обратите внимание, что в close нет скобок)

0 голосов
/ 24 апреля 2018

Вместо close() передать его, используя close, поэтому game.attachEvent(Event::EventType::Closed, close)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...