C ++在类中调用类外的方法

时间:2014-03-25 03:08:59

标签: c++ class

我有一个像这样的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},那么全局变量将无法运行}}。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:2)

只需要在调用它之前声明它。

在顶部或OnKeyPressed实施之前添加此行:

void keypress(uint8_t key);

这只是让编译器知道,这个方法还不存在,但是当整个程序被链接时,它就会存在。

答案 1 :(得分:2)

你只需要在

之前声明它

void keypress(unit8_t key);

void KbdRptParser :: OnKeyPressed(uint8_t key) {

}

个人建议,并遵循纯面向对象的方式,将keypress声明为类的静态函数,将全局变量声明为extern