Специальная функция в сообщении об ошибке

0

Не знаете, как исправить эту ошибку?

Вот сообщение...

 error C2664: 'glutSpecialFunc' : cannot convert parameter 1 from 'void (__cdecl *)(unsigned char,int,int)' to 'void (__cdecl *)(int,int,int)'   
 1>          None of the functions with this name in scope match the target type

И вот мой код....

Функция вызывается в основном.

    glutSpecialFunc(Keyboard); 

Вот этот метод.

void Keyboard(unsigned char key, int x, int y) {

if (key == 27) {
    exit(0);
} else if (key == GLUT_KEY_DOWN) {
    drawing = 1;
} else if (key == GLUT_KEY_UP) {
    drawing = 2; 
} else if (key == GLUT_KEY_LEFT) {
    drawing = 3;
} else if (key == GLUT_KEY_RIGHT) {
    drawing = 4;
}
glutPostRedisplay();
}
Теги:

1 ответ

2

glutSpecialFunc(Keyboard); ожидает функции, которые включают только параметры int.

Поэтому вам просто нужно изменить объявление функции следующим образом:

  void Keyboard(int key, int x, int y) {

    if (key == 27) {
        exit(0);
    } else if (key == GLUT_KEY_DOWN) {
        drawing = 1;
    } else if (key == GLUT_KEY_UP) {
        drawing = 2; 
    } else if (key == GLUT_KEY_LEFT) {
        drawing = 3;
    } else if (key == GLUT_KEY_RIGHT) {
        drawing = 4;
    }
    glutPostRedisplay();
  }

Из документации openGL:

glutSpecialFunc

glutSpecialFunc устанавливает специальный обратный вызов клавиатуры для текущего окна.

Применение

void glutSpecialFunc (void (* func) (int key, int x, int y));

  • 0
    Это все еще дает мне эту ошибку.
  • 0
    ошибка C2664: «glutSpecialFunc»: невозможно преобразовать параметр 1 из «void (__cdecl *) (unsigned char, int, int)» в «void (__cdecl *) (int, int, int)»
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню