下面是一个很好的例子:我试图重载OpenGL的glutMouseFunc
,以便它可以接受我选择的命名空间和类函数。其中特别的是Init::DisplayInit::mouse
,它是静态的。问题是,这可能吗?如果是这样,这是如何实现的?函数可以接受静态函数指针作为参数吗?
我实现从执行
..\OpenGL_03\/displayinit.h:27: error: variable or field 'glutMouseFunc' declared void
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: expected primary-expression before 'int'
..\OpenGL_03\/displayinit.h:27: error: void value not ignored as it ought to be
注意
void glutMouseFunc(void (Init::DisplayInit::*mouse)(int, int, int, int)) {
(*mouse);
}
错误,我把函数的声明在同一个文件的头文件。我还确保声明和函数的定义驻留在名称空间声明之外(这两个文件都包含大部分文件)。如图所示,第一个错误之一读取函数作为变量或字段(???)。
错误消息中的名称与代码片段不匹配。显示实际的代码。 – 2011-12-30 02:25:23
第一个错误表明编译器认为你是由于冒号而指定了一个位域或附近;其余的错误表明编译器仍然感到困惑。 – 2011-12-30 02:27:25