#ifndef _MYCCLASS_H_
#define _MYCCLASS_H_
#ifndef C_CLASS
#define C_CLASS struct
#endif
#ifndef C_STATIC
//#define C_STATIC(classname,x) namespace classname{ x;}
#define C_STATIC(classname,x)
#endif
C_CLASS CDriverObject{
C_CLASS CDriverObject* pDO;
void (*Read)(C_CLASS CDriverObject* pDO);
void (*ReadX)();
int a;
int b;
C_STATIC(CDriverObject,int staticMember)
};
#endif
#include <stdio.h>
#include "MyCClass.h"
#include <memory.h>
#include <malloc.h>
void MyRead(C_CLASS CDriverObject *pDo)
{
printf("CDriverObject::a=%d/n",pDo->a);
}
void MyReadX()
{
printf("CDriverObject Static Member:/n");
}
int main()
{
C_CLASS CDriverObject* pDo;
pDo=(C_CLASS CDriverObject *)malloc(sizeof(C_CLASS CDriverObject));
// ASSERT(pDo);
memset(pDo,0,sizeof(C_CLASS CDriverObject));
pDo->Read=MyRead;
pDo->ReadX=MyReadX;
pDo->pDO=pDo;
pDo->Read(pDo);
pDo->ReadX();
free(pDo);
return 0;
}
本文档展示了如何在C语言中使用结构体和函数指针来模拟C++的类特性,包括成员变量和方法。通过定义CDriverObject结构体,并设置Read和ReadX两个成员函数指针,实现了类似C++类的行为。在main函数中,动态分配内存创建CDriverObject实例,并初始化成员,调用模拟的方法。
2878

被折叠的 条评论
为什么被折叠?



