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();
}
4

1 に答える 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 キー, int x, int y));

于 2013-10-11T02:07:18.683 に答える