C ++ - 访问静态void函数的变量

时间:2015-07-14 11:41:43

标签: c++ variables undeclared-identifier

这是我的回调函数(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,我已经在这个类的其他函数中检测到了。我该如何管理?

2 个答案:

答案 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 );
}