gpt4 book ai didi

c++ - 如何在 C++ 中指向全局函数中的成员函数?

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:20 25 4
gpt4 key购买 nike

现在我正在编写一个带有 opengl 的 MFC 程序。当我尝试将 opengl 与 MFC 结合使用时,我遇到了一些问题:首先定义了一个类:CSCommTestDlg,定义了一个成员函数,代码如下:

void CSCommTestDlg::OpglMain(int argc, char* argv[])
{
glutDisplayFunc(displayCude);
}

displayCube也是类CSCommTestDlg的成员函数,而glutDisplayFunc是一个全局函数(一个opengl函数),glutDisplayFunc的函数声明如下:

GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void));

是的,正如你所看到的,glutDisplayFunc的参数是一个函数指针,我让它指向一个成员函数displayCube,这似乎是非法的,我得到了这样的错误:

error C2664: 'glutDisplayFunc' : cannot convert parameter 1 from 'void (void)' to 'void (__cdecl *)(void)'
None of the functions with this name in scope match the target type

似乎我不能指向全局函数中的成员函数,但我需要它。如何解决?

最佳答案

glutDisplayFunc 接受一个全局函数,所以,简单地说,你不能让它接受一个成员函数指针。

一个解决方案是将 displayCube 标记为静态,但这有点破坏了首先要有一个类的意义。

另一种选择是将全局函数声明为过剩显示回调,然后在该函数内调用 CSCommTestDlg 对象的 displayCube 成员函数 - 如果您可以获得指向它的全局指针。

关于c++ - 如何在 C++ 中指向全局函数中的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8558942/

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