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

时间:2013-09-06 20:51:16

标签: c++ function opengl methods glut

我正在使用带有C ++的GLUT,并且我正在使用类型为glutDisplayFunc的单个参数调用名为void (*)(void)的函数。出于某种原因,当我从我的一个类中使用以下C ++方法时:

void EventHandler::Render(void) { ... }

它抛出了这个错误:

cannot initialize a parameter of type 'void (*)()' with an rvalue of type 'void'

这似乎让我觉得我的C ++方法没有被声明为正确遵守参数类型void (*)(void)。如何使我的方法使用此函数参数?

1 个答案:

答案 0 :(得分:5)

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

glutDisplayFunc(EventHandler::Render)

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