这是我的回调函数(ALOG用于调试)
static void playerEventCallbackA(void *clientData, SuperpoweredAdvancedAudioPlayerEvent event, void *value) {
ALOG("###################### CALLBACK PLAYER A.... ");
if (event == SuperpoweredAdvancedAudioPlayerEvent_LoadSuccess) {
ALOG("###################### CALLBACK PLAYER A.... loaded");
SuperpoweredAdvancedAudioPlayer *playerA = *((SuperpoweredAdvancedAudioPlayer **)clientData);
playerA->setBpm(126.0f);
playerA->setFirstBeatMs(353);
playerA->setPosition(playerA->firstBeatMs, false, false);
};
}
我需要在这里设置bpm,我已经在这个类的其他函数中检测到了。我该如何管理?
答案 0 :(得分:2)
您不能,因为static function
没有this
参数。您只能访问静态成员,或者将所需类型的对象发送到静态函数。
答案 1 :(得分:0)
您要么将类的对象传递给函数,要么在函数内使用对象的数据成员,要么创建类的对象作为函数的局部变量并访问对象的数据成员
例如
#include <iostream>
class A
{
private:
float a, b, c;
public:
A( float a, float b, float c ) : a( a ), b( b ), c( c )
{
}
static void display_average( const A &a )
{
std::cout << ( a.a + a.b + a.c ) / 3 << std::endl;
}
};
int main()
{
A a( 10.10f, 20.20f, 30.30f );
A::display_average( a );
}