[英]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.