0

如何使用 Objective C 方法作为 glutDisplayFunc(以及类似的函数)的参数?我对 ObjC 很陌生,所以我不完全知道它是如何工作的

在 C++ 中,你可以只传入一个 void,但在 ObjC 中,我尝试了这个:

    //...
    glutDisplayFunc([self display]);
    //...

-(void) display{
    glutPostRedisplay();
}

我也尝试过静态方法

    //...
    glutDisplayFunc([self display]);
    //...

+(void) display{
    glutPostRedisplay();
}

但每次我收到错误“将'void'传递给不兼容类型void(*)(void)的参数”时。我以为你可以在虚空中通过。

那么,我怎样才能使这项工作(它必须是一种方法)

4

1 回答 1

0

在 C++ 中,你可以只传入一个 void

不,你不能。

那么,我怎样才能使这项工作(它必须是一种方法)

你不能。您感兴趣的是被称为闭包委托的东西,但 GLUT 只会采用全局范围的 C 风格回调函数。您能做的最好的事情是编写一个具有与 C 兼容的调用约定的全局范围包装器,然后调用全局范围类实例的方法。

于 2013-05-10T14:45:02.983 回答