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

时间:2014-03-11 00:45:27

标签: c++ qt static-methods static-members

我实际上有一个代码(我无法改变)需要一个静态函数作为“回调函数”。

当我将函数更改为static时,我无法访问“this”和我的类成员。此外,我无法将“this”作为参数传递给函数,因为我无法更改原始SDK和定义文件,所以我该怎么办?

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

我该怎么办? 我正在使用QT和VS 2012作为编译器。 感谢

2 个答案:

答案 0 :(得分:1)

静态函数与全局函数是通用的,你无法想象你可以在全局函数中使用“this”,而不是提及类成员...... 唯一的区别是静态函数有一个“名称空间”,称为calss名称。 因此,无论您使用的是什么,或者使用哪种编译器,您都不能在静态函数中使用“this”或类成员,它只是语言功能。 你应该像迈克所说的那样修改你的代码。

答案 1 :(得分:0)

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