易截截图软件、单文件、免安装、纯绿色、仅160KB

C的结构体模拟C++类,如何实现this指针问题?

比如结构体

C/C++ code:

typedef struct {
int a;
void (*set_a)(int val);
} test_t;

void my_set_a(int val)
{
/* 哪里能得到这个指向不同实例的this指针? */
this->a = val;
}

void main(void)
{
test_t test;

test.set_a = my_set_a;

test.set_a(1);
}




想了半天也想不出来, 在C中该怎么搞定这个问题, 不知道各位有没有什么高招?

C/C++ code:
typedef struct _test_t{
int a;
void (*set_a)(_test_t*, int val);
} test_t;

void my_set_a(test_t* this, int val)
{
this->a = val;
}

void main(void)
{
test_t test;

test.set_a = my_set_a;

test.set_a(&test, 1);
}



那应该是编译器的事。语法上面不好实现吧。。。
参考侯杰《深入C++ object对象模型》

用c实现oo的一小段代码

C/C++ code:

#include <stdio.h>

typedef struct
{
void *p;
int ma;
void (*vshow)(void *this);
} A;

typedef struct
{
A parent;
void *p;
int mb;
char name[2];
} B;


typedef struct
{
void (*set_ma)(void *this, int a);
} AC;

typedef struct
{


相关问答:

用C或C++如何编写求解3D魔方程序 - C/C++ / C++ 语言

请问用C或C++如何编写求解3D魔方的程序,该从何开始?
谢谢各位,帮忙提点建议吧。

http://www.mofang.net/code/176/182/6581.html

我只能突破60秒!唉。

我刚过40秒

google的android中有个OpenGL ES + ......

linux环境下gethostbyname函数问题 - C/C++ / C语言

写了个测试程序如下
   
  struct hostent *hp; 
char AlarmDevIP[20];  
  int x2;

hp = gethostbyname("www.google.com");
if (hp)
{ ......

C 程序问题 (三) - C/C++ / C语言

问题一:
在对齐为4的情况下
struct BBB
{
long num;
char *name;
short int data;
char ha;
short ba[5];
}*p;
p=0x1000000;
p+0x200=____;
(Ulong)p+0x200=____;
(char*)p+0x200=____;
假设在32位C ......

C 程序问题(四) - C/C++ / C语言

#include "stdio.h"
int main()
{
  char *ch(char *, char *);
  char str1[]="I am glad to meet you!";
  char str2[]="Welcom to study C!";
&nb ......

关于c:forEach迭代标签的问题

本人在项目中,用ssh架构,想做成分页的效果.
以前我在页面中是,这样取得数据的
<!--进行循环遍历数据-->
<!--进行循环遍历数据-->
<%
List<Users> lof = (List) request.getAttri ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号