Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将其他参数传递给KeyboardFunc_C++_Opengl_Parameter Passing_Freeglut - Fatal编程技术网

C++ 将其他参数传递给KeyboardFunc

C++ 将其他参数传递给KeyboardFunc,c++,opengl,parameter-passing,freeglut,C++,Opengl,Parameter Passing,Freeglut,我们能否将附加参数传递给glutKeyboardFunc?我有一个类,我想在按下某个键时修改该类的数据。该类在全局范围内,但该类的对象是特定函数的局部对象。此外,我不想将对象设置为全局对象。不幸的是,GLUT完全是关于全局数据的。它没有通过回调函数传递数据的概念。如果对象在本地函数中,那么当函数退出时,它将被销毁。当调用KeyboardFunc时引用被破坏的对象,你希望会发生什么?@DrewDormann:这取决于所用编程语言的功能。例如,如果OP使用的语言内置了对闭包或委托的支持,那么它就可以

我们能否将附加参数传递给
glutKeyboardFunc
?我有一个类,我想在按下某个键时修改该类的数据。该类在全局范围内,但该类的对象是特定函数的局部对象。此外,我不想将对象设置为全局对象。

不幸的是,GLUT完全是关于全局数据的。它没有通过回调函数传递数据的概念。如果对象在本地函数中,那么当函数退出时,它将被销毁。当调用KeyboardFunc时引用被破坏的对象,你希望会发生什么?@DrewDormann:这取决于所用编程语言的功能。例如,如果OP使用的语言内置了对闭包或委托的支持,那么它就可以正常工作。例如,D编程语言支持这一点。如果使用函数式语言,传递附加参数也是小菜一碟。使用lambda函数,或者如果功能可用,则使用currying;Haskell将是一种支持这一点的语言。公平地说,使用ffcall库,您甚至可以使用C创建闭包call,所以
onKeyboard
是键盘回调。在此函数中,您可以调用对象的setter方法,该方法根据按下的键修改相应变量的值。你们为什么不这样做呢?请你们详细说明一下setter方法,我不知道这个术语。