我知道这件事有效:
void myDisplay()
{
...
}
int main()
{
...
glutDisplayFunc(myDisplay)
...
}
Run Code Online (Sandbox Code Playgroud)
所以我试图将myDisplay()函数包含到我创建的类中.因为我希望将来用不同的类重载它.但是,编译器抱怨说
argument of type 'void (ClassBlah::)()' does not match 'void(*)()' .
这是我尝试做的:
class ClassBlah
{
....
void myDisplay()
....
}
......
int main()
{
...
ClassBlah blah
glutDisplayFunc(blah.myDisplay)
...
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?非常感谢.
小智 5
我遇到了自己编写C++ Glut引擎的问题.这是我如何解决它:
我将它们放在program.cpp/main.cpp的顶部
// Function prototypes
void doRendering( void );
void processMouse( int, int ) ;
void processMouseClick(int button, int state, int x, int y);
void keyboardInput(unsigned char c, int x, int y);
Run Code Online (Sandbox Code Playgroud)
在这里将这些函数分配给过剩的回调:
glutDisplayFunc(doRendering);
glutIdleFunc(doRendering);
glutPassiveMotionFunc(processMouse);
glutMotionFunc(processMouse);
glutMouseFunc(processMouseClick);
glutKeyboardFunc(keyboardInput);
Run Code Online (Sandbox Code Playgroud)
创建我自己的类,它自己处理这些,然后使我们的静态函数的内容只调用这个类的实例上的方法.你的main函数应该在main中创建一个新的类实例(在我的例子中...... App*newApp).
void doRendering( void )
{
newApp->updateScene();
newApp->drawScene();
}
void processMouse(int x, int y)
{
newApp->processMouse(x, y);
}
void processMouseClick(int button, int state, int x, int y)
{
newApp->processMouseClick(button, state, x, y);
}
void keyboardInput(unsigned char c, int x, int y)
{
newApp->keyboardInput(c, x, y);
}
Run Code Online (Sandbox Code Playgroud)
希望能够解释它.
| 归档时间: |
|
| 查看次数: |
10178 次 |
| 最近记录: |