gpt4 book ai didi

C++ 如何从 main() 外部访问在 main() 中初始化的对象?

转载 作者:行者123 更新时间:2023-11-27 23:21:14 25 4
gpt4 key购买 nike

我的 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++ 如何从 main() 外部访问在 main() 中初始化的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com