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魔方的程序,该从何开始?
谢谢各位,帮忙提点建议吧。
http://www.mofang.net/code/176/182/6581.html
我只能突破60秒!唉。
我刚过40秒
google的android中有个OpenGL ES + ......
写了个测试程序如下
struct hostent *hp;
char AlarmDevIP[20];
int x2;
hp = gethostbyname("www.google.com");
if (hp)
{
......
问题一:
在对齐为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 ......
#include "stdio.h"
int main()
{
char *ch(char *, char *);
char str1[]="I am glad to meet you!";
char str2[]="Welcom to study C!";
&nb ......
本人在项目中,用ssh架构,想做成分页的效果.
以前我在页面中是,这样取得数据的
<!--进行循环遍历数据-->
<!--进行循环遍历数据-->
<%
List<Users> lof = (List) request.getAttri ......