静态回调函数和非静态成员
Static callback function and non-static member
我实际上有一个代码(我不能改变)需要一个静态函数作为"回调函数"。
当我将函数更改为静态时,我不能访问"this"和我的类成员。此外,我不能将"this"作为参数传递给函数,再次因为我不能更改原始SDK和定义文件,所以我该怎么办?
我的代码在一个类中,其中一个类函数调用一个需要"静态回调函数"作为参数的函数。这个"回调函数"还需要访问"this"和其他要处理的类成员。
我能做什么?我使用QT和VS 2012作为编译器。由于
静态函数与全局函数是相同的,你不能想象你可以在全局函数中使用"this",更不用说类成员了…唯一的区别是静态函数有一个"命名空间",即类名。因此,无论您使用什么或使用哪个编译器,都不能在静态函数中使用"this"或类成员,这只是语言特性。你应该像Mike说的那样修改你的代码
如果您使用现代版本的c++(11或更早),您可以使用std::bind
。或者使用boost:bind
相关文章:
- 如何在C++中使用非静态成员函数作为回调函数
- 静态成员函数使用相同的名称时出现模板类型名称错误
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 为什么传递非静态成员函数会导致编译错误?
- 处理类内的回调时,必须调用对非静态成员函数的引用
- 非静态成员函数的 decltype 格式不正确吗?
- std::异步与非静态成员函数
- C++无效使用非静态成员函数?
- 未使用的C++未优化的静态成员函数/变量
- C++:如何返回指向非静态成员函数的指针?
- 使用静态成员函数而不是普通函数是否有任何开销?
- 在 stream_descriptor::async_wait 中无效使用非静态成员函数
- 为什么我不能像这样在静态成员函数中调用静态成员变量?
- 无法在clang Linux中分配非静态成员函数,但我可以在Visual Studio Windows中分配
- 在类定义中推导内联静态成员函数的返回类型
- `enable_if()`以禁用模板化类的静态成员函数声明
- 错误:无效使用非静态成员函数"int test::hotplug_callback(libusb_contex
- 常量静态成员函数
- 使用 vector.sort() 的非静态成员函数无效使用
- 从静态成员函数访问私有非静态类变量 - C++