gpt4 book ai didi

c++ - 有时将函数作为参数发送时出错

转载 作者:搜寻专家 更新时间:2023-10-31 02:03:07 26 4
gpt4 key购买 nike

错误是'GLHandler::handleKeys': 非标准语法;使用“&”创建指向成员的指针四次,关于不同的功能。

我正在尝试为初始化过剩创建一个包装器类,以使事情变得更干净。

由于相同的原因,错误出现在 4 行上,但我不确定原因。

所有这些都是设置回调

initGlut 函数内部:

glutKeyboardFunc(this->handleKeys); 
glutDisplayFunc(this->render);
glutTimerFunc(1000 / SCREEN_FPS, this->runMainLoop, 0);

runMainLoop 函数内部

glutTimerFunc(1000 / this->SCREEN_FPS, this->runMainLoop, val);

当从 main 内部以相同方式调用时,这里抛出的错误不存在,这让我相信这个类有问题,但我看不到它。

最佳答案

this->handleKeysthis->renderthis->runMainLoop 是类方法而不是函数。回调必须是函数或静态方法。

例如参见 glutDisplayFunc (另请参阅 freeglut Application Programming Interface ):

glutDisplayFunc sets the display callback for the current window.

Usage

void glutDisplayFunc(void (*func)(void));

注意,类的方法只能被类的对象调用。指向方法 的指针是不够的。您可以将类的方法想象成一个函数,其中第一个参数是指向该类对象的指针。

如果有类

class Foo
{
public:
void render(void);
};

然后可以通过&Foo::render 获取指向方法render 的指针。但是指针的类型是 void(Foo::*)(void) 而不是 void(*)(void)

关于c++ - 有时将函数作为参数发送时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55998904/

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