В простой программе opengl у меня есть следующая строка:
glutKeyboardFunc(keypressed);
Проблема заключается в том, что моя "нажатая" функция находится в другом файле cpp, включенном в проект. Как я могу вызвать эту функцию из другого файла?
в main.cpp:
main()
{
---
glutKeyboardFunc(keypressed);
---
}
в Motion.cpp:
void keypressed(unsigned char key, int x, int y){...}
Вещи, которые я пытаюсь (все дали ошибку компиляции):
glutKeyboardFunc(keypressed);
glutKeyboardFunc(Motion::keypressed);
glutKeyboardFunc(&Motion::keypressed);
glutKeyboardFunc(&keypressed);
Motion mot;
glutKeyboardFunc(mot.keypressed);
Какие-либо предложения? (Я использовал freeglut.dll, если библиотека отвечает за ответ)
Вам нужно включить прототип функции где-нибудь, где он будет считаться вашим основным C++ файлом. Один из способов сделать это - поставить это выше вашей main
функции:
void keypressed(unsigned char key, int x, int y);
Обычный способ сделать это состоит в том, чтобы каждый C++ файл, который экспортирует функции, также имеет файл заголовка, который включает прототипы для всех этих функций. Затем, когда вы хотите использовать функцию, определенную внутри этого файла, вы можете включить этот заголовочный файл в верхней части файла, который должен использовать эту функцию.