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 (*) ());
ошибка: невозможно инициализировать параметр типа 'void (*) () "с помощью значения типа" void " game.attachEvent (Event :: EventType :: Closed, close ());
примечание: передача аргумента параметру здесь void attachEvent (sf :: Event :: EventType, void (*) ());
Почему отображается эта ошибка? Я пытаюсь прикрепить событие, которое я могу вызвать с помощью function();. В качестве параметра он объявляется как void (*function)(). Спасибо.
function();
void (*function)()
Передача close() вызывает функцию закрытия и передает результат, равный void
close()
void
Вы хотите передать саму функцию с помощью:
game.attachEvent(Event::EventType::Closed, close);
(Обратите внимание, что в close нет скобок)
close
Вместо close() передать его, используя close, поэтому game.attachEvent(Event::EventType::Closed, close)
game.attachEvent(Event::EventType::Closed, close)