这两天看了一下函数指针,就实现了一下用结构体实现类似于类定义的功能。
#include <stdio.h>
typedef struct demo
{
int i;
int j;
int (*geti)(struct demo *it);
int (*getj)(struct demo *it);
void (*set)(struct demo *it, int i, int j);
int(*max) (struct demo *it);
}Demo;
int geti(struct demo *it)
{
return it->i;
}
int getj(struct demo *it)
{
return it->j;
}
int max(struct demo *it)
{
return (it->i > it->j ? it->i : it->j);
}
void set(struct demo *it, int i, int j)
{
it->i = i;
it->j = j;
}
int main()
{
Demo d;
d.set = set;
d.max = max;
d.geti = geti;
d.getj = getj;
d.set(&d, 3, 4);
printf("max=%d\n", d.max(&d));
printf("i = %d\n", d.geti(&d));
printf("i = %d\n", d.getj(&d));
getchar();
return 0;
}