2017-01-15 9 views
-1

'からノー適した変換機能を' 私はlambasを用いた小型のArduinoプロジェクトがあります。のArduinoラムダエラー

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

ラムダはstateを持っているため、関数の引数のように関数ポインタに変換できません。

ラムダから状態を削除してそれをやり直すか、関数を変更して呼び出すことができるようにする必要があります。