我有一个像这样的c ++程序:
class KbdRptParser : public KeyboardReportParser
{
void PrintKey(uint8_t mod, uint8_t key);
protected:
virtual void OnControlKeysChanged(uint8_t before, uint8_t after);
virtual void OnKeyDown (uint8_t mod, uint8_t key);
virtual void OnKeyUp (uint8_t mod, uint8_t key);
virtual void OnKeyPressed(uint8_t key);
};
//ommitted stuff here
void KbdRptParser::OnKeyPressed(uint8_t key)
{
keypress(key);
};
void keypress(uint8_t key)
{
//do stuff...
}
//rest of program...
我希望能够从keypress
内部调用KbdRptParser::OnKeyPressed
,因为如果我将代码从keypress
放入{{1},那么全局变量将无法运行}}。我怎么能做到这一点?
答案 0 :(得分:2)
只需要在调用它之前声明它。
在顶部或OnKeyPressed实施之前添加此行:
void keypress(uint8_t key);
这只是让编译器知道,这个方法还不存在,但是当整个程序被链接时,它就会存在。
答案 1 :(得分:2)
你只需要在
之前声明它void keypress(unit8_t key);
void KbdRptParser :: OnKeyPressed(uint8_t key) {
}
个人建议,并遵循纯面向对象的方式,将keypress声明为类的静态函数,将全局变量声明为extern