Я столкнулся с этой проблемой при написании движка C ++ Glut самостоятельно.Вот как я обошел это:
Я разместил их в верхней части моей программы .cpp / main.cpp
// Function prototypes
void doRendering( void );
void processMouse( int, int ) ;
void processMouseClick(int button, int state, int x, int y);
void keyboardInput(unsigned char c, int x, int y);
Назначьте эти функции для обратных вызовов glut здесь:*
Создайте свой собственный класс, который обрабатывает их самостоятельно, а затем заставляет содержимое наших статических функций просто вызывать методы в экземпляре этого класса.Ваша основная функция должна создать новый экземпляр класса в main (в моем случае ... App * newApp).
void doRendering( void )
{
newApp->updateScene();
newApp->drawScene();
}
void processMouse(int x, int y)
{
newApp->processMouse(x, y);
}
void processMouseClick(int button, int state, int x, int y)
{
newApp->processMouseClick(button, state, x, y);
}
void keyboardInput(unsigned char c, int x, int y)
{
newApp->keyboardInput(c, x, y);
}
Надеюсь, что это объясняет.