静态回调函数和非静态成员

Static callback function and non-static member

本文关键字:静态成员 函数 回调 静态      更新时间:2023-10-16

我实际上有一个代码(我不能改变)需要一个静态函数作为"回调函数"。

当我将函数更改为静态时,我不能访问"this"和我的类成员。此外,我不能将"this"作为参数传递给函数,再次因为我不能更改原始SDK和定义文件,所以我该怎么办?

我的代码在一个类中,其中一个类函数调用一个需要"静态回调函数"作为参数的函数。这个"回调函数"还需要访问"this"和其他要处理的类成员。

我能做什么?我使用QT和VS 2012作为编译器。由于

静态函数与全局函数是相同的,你不能想象你可以在全局函数中使用"this",更不用说类成员了…唯一的区别是静态函数有一个"命名空间",即类名。因此,无论您使用什么或使用哪个编译器,都不能在静态函数中使用"this"或类成员,这只是语言特性。你应该像Mike说的那样修改你的代码

如果您使用现代版本的c++(11或更早),您可以使用std::bind。或者使用boost:bind