C++:无法使用'void'类型的右值初始化'void(*)()'类型的参数

bea*_*akr 1 c++ opengl methods glut function

我正在使用GLUT和C++,我正在调用一个glutDisplayFunc使用该类型的单个参数调用的函数void (*)(void).出于某种原因,当我从我的一个类中使用以下C++方法时:

void EventHandler::Render(void) { ... }
Run Code Online (Sandbox Code Playgroud)

它抛出此错误:

cannot initialize a parameter of type 'void (*)()' with an rvalue of type 'void'
Run Code Online (Sandbox Code Playgroud)

这似乎让我觉得我的C++方法没有被声明为正确符合参数类型void (*)(void).我该怎么做才能让我的方法使用这个函数参数?

Car*_*rum 5

C++方法不是正常的函数.它不会转换为普通函数指针.你没有显示你的实际代码,但我假设你做了类似的事情:

glutDisplayFunc(EventHandler::Render)
Run Code Online (Sandbox Code Playgroud)

如果你想以这种方式使用它,你需要创建Render一个static方法.否则声明一个自由函数并使用它.