说我有:
void Render(void(*Call)()) { D3dDevice->BeginScene(); Call(); D3dDevice->EndScene(); D3dDevice->Present(0,0,0,0); }
只要我想用于渲染的函数是函数或static
成员函数,这就没问题了:
Render(MainMenuRender); Render(MainMenu::Render);
但是,我真的希望能够使用类方法,因为在大多数情况下,渲染函数将要访问成员变量,而Id则不会使类实例成为全局,例如
Render(MainMenu->Render);
但是我真的不知道如何做到这一点,仍然允许使用函数和static
成员函数.
有很多方法可以为这只猫提供皮肤,包括模板.我最喜欢的是Boost.function,因为从长远来看,我发现它是最灵活的.另请阅读Boost.bind以了解绑定到成员函数以及许多其他技巧.
它看起来像这样:
#include#include void Render(boost::function0 Call) { // as before... } Render(boost::bind(&MainMenu::Render, myMainMenuInstance));