我已經編寫了一個庫,允許通過檢查收到的ASCII字符來將函數綁定到關鍵事件。它適用於主代碼中定義的非成員函數。它不適用於成員函數。我知道這是因爲成員函數和非成員函數是不同類型的。我如何將以前未定義的類的函數傳遞給我的庫中的此函數?傳遞函數和成員函數作爲另一個函數的參數
的類型定義:
typedef void (*tobind)();
有問題的功能:
void Keybinder::bind(char key,int mode,tobind func) {
switch(mode){
//execute depending on the event mode argument
case 0:
pressed[key] = func; //assign the function to the character pressed event
break;
case 1:
down[key] = func; //assing the function to the character down event
break;
case 2:
released[key] = func; //assign the function to the character released event
break;
}
}
也許std :: function? C和C++聲明的語法可能很糟糕,std :: function有助於這個和其他的東西。 –
它比_「更進一步,因爲成員函數和非成員函數是不同類型的。」_這些類型生活在完全不同的「類」類型中。 –
Google用於「成員函數綁定C++」。 –