概述
用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的。
测试代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Alg_Obj{
struct Alg_Fxn* fxns;
}Alg_Obj;
typedef Alg_Obj *Alg_Handle;
typedef struct Alg_Fxn{
void (*process)(Alg_Handle handle);
void (*control)(Alg_Handle handle);
}Alg_Fxn;
void Alg_process(Alg_Handle handle)
{
handle->fxns->process(handle);
printf("in Alg_process.. n");
}
void Alg_control(Alg_Handle handle)
{
handle->fxns->control(handle);
printf("in Alg_control.. n");
}
struct triangle{
Alg_Handle handle;
int a;
int b;
int c;
};
void tri_process(Alg_Handle handle)
{
struct triangle *t = (struct triangle*)handle;
int a = t->a;
int b = t->b;
int c = t->c;
printf(" [in tri_process] sum=%dn",a+b+c);
}
void tri_control(Alg_Handle handle)
{
struct triangle *t = (struct triangle*)handle;
int a = t->a;
int b = t->b;
int c = t->c;
printf(" [in tri_control] sum=%dn",(a+b+c)*2);
}
Alg_Fxn gfxns = {
tri_process,
tri_control,
};
int main()
{
struct triangle *ret = (struct triangle*)malloc(sizeof(struct triangle));
ret->handle->fxns=&gfxns;
ret->a = 2;
ret->b = 3;
ret->c = 4;
Alg_Handle Handle= (Alg_Handle)ret;
//第一种调用,注意结果
gfxns.process(Handle);
gfxns.control(Handle);
printf("n**********************************n");
//第二种调用,注意结果
Alg_process(Handle);
Alg_control(Handle);
free(Handle);
return 0;
}
/*
[root@localhost TestCode]# ./a.out
[in tri_process] sum=9
[in tri_control] sum=18
**********************************
[in tri_process] sum=9
in Alg_process..
[in tri_control] sum=18
in Alg_control..
*/
最后
以上就是洁净巨人为你收集整理的用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的的全部内容,希望文章能够帮你解决用C结构体来实现面向对象编程,ti xDAIS标准算法就这么搞的所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复