mx_whu 发表于 2010-6-3 16:07:48

补充一个技巧:继承,先上代码,
//父类
typedef struct
{
    long width;
    long height;
    void (*paint)(void *_this);
}
WINDOW;
//子类
typedef struct
{
    WINDOWbase; //继承于WINDOW类
    void (*OnClick)(void *_this);
}
BUTTON;

int main(int argc,char **argv)
{
    BUTTON button;
    //间接调用父类成员
    button.base.paint(&button.base);
    //强制类型转换后直接访问父类成员
    ((WINDOW)button).paint(&button);

    return 0;
}
中心思想就是在子结构体的起始处包含一个父结构体成员,必须要放在起始处,才可以实现强制类型转换,原因你应该一想就明白~~

lgcandcgl 发表于 2010-7-14 16:34:08

如果nisy在例子中将指针使用去掉,更易于初学者理解,并且这个例子并不是必须用指针指向!
页: 1 [2]
查看完整版本: 在C语言中模拟类的思想