簡體   English   中英

C ++-訪問靜態void函數上的變量

[英]C++ - access variables on static void functions

這是我的回調函數(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,這是我在此類中的其他函數上檢測到的。 我該如何處理?

您不能,因為static function沒有this參數。 您只能訪問靜態成員,或將所需類型的對象發送到靜態函數。

您必須將類的對象傳遞給函數,並在函數內使用對象的數據成員,或者將類的對象創建為函數的局部變量,然后訪問對象的數據成員。

例如

#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 );
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM