原创 静态成员函数访问非静态类数据成员的一般方法...(John_Lee)

2008-2-10 01:26 4303 5 5 分类: MCU/ 嵌入式

原帖出处: http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=1718995



静态成员函数访问非静态类数据成员的一般方法...
mood.gif John_Lee 发表于 2005-7-1 09:26 AVR 单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖


最常用和普通的方法是:可以在声明静态成员函数时增加一个类指针参数,用来访问非静态类数据成员,其实就相当于将 this 显示化了而已。在调用该静态函数时,调用者需要传递一个类指针参数。

例:
class foo_t
{
    ...
    static uint8_t static_data;                // 静态数据成员
    uint8_t ordinary_data;                     // 普通数据成员
    static void static_func (foo_t *, ...);    // 静态成员函数
    void ordinary_func (...);                  // 普通成员函数
    ...
};

void foo_t::ordinary_func (...)
{
    ...
    static_func (this, ...);          // 调用静态成员函数,将 this 指针传递给 static_func 以便访问 普通数据成员
    ...
}

void foo_t::static_func (foo_t *foo, ...)
{
    foo->ordinary_data = static_data;     // 直接访问 static_data,通过 foo 访问 ordinary_data
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条