簡體   English   中英

誰能解釋一下這部分代碼

[英]Can anyone explain me this part of the code

這是一個回調函數,但我不知道這部分是如何工作的

如果(cb_onPress){cb_onPress(* this); } //觸發onPress事件

class Button;
typedef void (*buttonEventHandler)(Button&);

class Button {
  public:
 //code
   private:
 //code
 buttonEventHandler  cb_onPress;
};

 void Button::process(void)
 {
  //code
    if (cb_onPress) { cb_onPress(*this); }   //fire the onPress event

 }       

void Button::pressHandler(buttonEventHandler handler)
{
  cb_onPress = handler;
}

cb_onPress是指向返回void並接受Button&參數的函數的指針。 它可能指向以下內容:

void foo(Button&){ std::cout << "Foo Button!\n"; }

Button成員函數內部的這一行,

if (cb_onPress) { cb_onPress(*this); } 

檢查指向函數的指針是否不為null,如果是,則調用該指針,並傳遞與參數相同的Button實例(即傳遞*this實現的結果)。

使用示例:

Button b;
b.pressHandler(foo);  // sets cb_onPress to point to foo
....
b.process();          // Prints "Foo Button"

盡管大概是對事件的響應,但流程調用在內部發生。

if (cb_onPress) { cb_onPress(*this); }

cb_onPress是指向函數的指針。 如果指針是nullptr ,則無法調用它,因此代碼會事先檢查它。

總體支持的客戶端用法如下:

void myButtonEventHandler(Button& b) { ...do something when pressed... };

Button button;  // make a button
button.pressHandler(myButtonEventHandler);

如果(cb_onPress)

檢查cb_onPress是否為空指針。 換句話說,檢查該函數是否已定義。 如果不是,則調用函數

cb_onPress

在那個物體上

暫無
暫無

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

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