我的main()看起来像这样:
int main(int argc, char** argv)
{
// Initialize GLUT
glutInit(&argc, argv);
...
glutDisplayFunc(display);
...
// Set robot's parameters
Robot robot; // Initialize global object robot
robot.setSize(50);
robot.setColor('G');
robot.setLocation(50,100);
glutMainLoop();
return EXIT_SUCCESS;
}
然后,我还有另一个功能,我想访问机器人的方法:
// This function is constantly "looped"
void display() {
...
robot.draw();
...
}
用C ++合法的方式是什么?
最佳答案
对于任何有兴趣的人,问题都改变了,所以我的旧答案丢失了。
如果要求您的display
函数具有特定的签名(void()
),则可以使用std::bind
,前提是您可以访问C ++ 11:
void display(Robot &robot){...}
//in main
Robot robot;
glutDisplayFunc(std::bind(std::ref(display), robot));
如果您没有C ++ 11,
boost::bind
也可以正常工作:glutDisplayFunc(boost::bind(boost::ref(display), robot));
如果两者都不存在,则必须在全球范围内存储
robot
。关于c++ - C++如何从main()外部访问在main()中初始化的对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12850833/