2017-01-15 46 views
-1

'從沒有合適的轉換函數' 我有使用lambas小Arduino的項目:的Arduino lambda表達式錯誤

typedef void(*keyboardKeyDelegate)(int); 

void KeyboardKeyChange(int button, keyboardKeyDelegate onKeyChange); 
void KeyboardKeyChange(int button, keyboardKeyDelegate onKeyChange) 
{ 
    // code... 
} 

void KeyboardKeyClick(int button, keyboardKeyDelegate onClick); 
void KeyboardKeyClick(int button, keyboardKeyDelegate onClick) 
{ 
    // code... 
} 

..下

bool r = true; 
KeyboardKeyClick(KB_TOP, [&r](int state) 
{ 
    r = !r; 
    Serial.println("> KB_TOP CLICKED"); 
}); 

我有一個錯誤,而編譯源:

no suitable conversion function from "lambda []void (int state)->void" to "keyboardKeyDelegate" exists 

也許有人知道更多關於這個錯誤,並幫助我弄清楚。

回答

0

您的lambda具有狀態,因此不能像函數參數那樣轉換爲函數指針。

您需要從您的lambda中移除狀態並且恢復它,或者通過將函數轉換爲模板來更改函數來接受任何可調用函數。