过剩错误消息中的特殊功能

时间:2013-10-11 01:51:06

标签: c++

不确定如何解决此错误?

这是消息......

 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

这是我的代码......

该函数在main中被调用。

    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 个答案:

答案 0 :(得分: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));