C语言能不能简单的实现C++的this指针
C++的所有类成员函数会有一个隐含的this指针作为入口参数,不知道C语言中能不能变相实现struct里的函数指针也隐含带上this指针。
比如做如下一个结构体
C/C++ code
struct A
{
int num;
int (*setNum)(int value);
};
能实现类似下面的功能
C/C++ code
struct A
{
int num;
int (*setNum)(struct A a,int value);//这里其实编译过不了的
};
int setNum(struct A a, int value)
{
a.num = value;
}
A a;
a.setNum = setNum;
a.setNum(a,1);
即把函数指针中的第一个参数实现成一个隐含的this指针。初步想用宏定义来替换掉,但是不知道怎么做,请各位高手指点迷津。
------解决方案-------------------- 就别玩这种技巧了吧。没有编译器的直接支持,怎么模拟代码恐怕都是丑陋的,使用者的负担都是沉重的。
------解决方案--------------------
不是很明白楼主意思,如果是想在C中实现:a->setNum(a, 10); 六楼写得很清楚;
但如果你想像C++一样隐藏this参数传入的事实,如a->setNum(10);,我也考虑过这个问题,但没找到合适方法;
变通方法到可以用一个函数设置当前操作对象。。。但结果上更加麻烦
------解决方案--------------------
探讨 没想好怎么弄这个。 引用:用一个函数设置当前操作对象