当前位置: 代码迷 >> C语言 >> 为结构添加方法
  详细解决方案

为结构添加方法

热度:361   发布时间:2008-06-20 16:59:43.0
所以你可以使用一些技巧来模拟mangled name的
----------------解决方案--------------------------------------------------------
用一个指向函数的指针放在函数里面可以实现
----------------解决方案--------------------------------------------------------
找个C++的编译器,看看C++编译器是怎么实现的不就知道了吗
----------------解决方案--------------------------------------------------------
C模拟C++,貌似就是接口规则....语法不像,但是就那么回事...
----------------解决方案--------------------------------------------------------
恩。
还有,C++的this通过ecx传递,速度上比C模拟的快。
C++和C各有所长,何必去模拟呢?
----------------解决方案--------------------------------------------------------
我当且紧当关心的是实现的技巧,而不关心其实现有什么价值,它价值之所在否,那是另一个讨论范畴了..
太多题外之言没用...
----------------解决方案--------------------------------------------------------
[bo][un]ioriliao[/un] 在 2008-6-17 14:26 的发言:[/bo]


#include
typedef void (*printDel)();
typedef struct point
{
     int x;
     printDel print;      
}point;
void print(point*);
point* new_point();

point* new_point()
{
     point* tmp= ...

这位兄弟真的很不错,很喜欢研究,也不说一些空洞的话,写代码就是做实事,就算简单,比耍嘴皮子要好,支持你呵呵
不过我认为你开辟内存空间是多余的。这样就可以的
#include <stdio.h>
typedef void (*printDel)();
typedef struct
{
     int x;
     printDel print;
}point;
void print(point*);
point* new_point();

point* new_point()
{
     point* tmp=NULL;
     tmp->print=print;
     return tmp;
}
void print(point* tmp)
{
     printf("%d\n",tmp->x);
}

int main(void)
{
    point* xy=new_point();
    xy->x=10;
    xy->print(xy);
    getch();
    return 0;
}
----------------解决方案--------------------------------------------------------
xy->print(xy);
既不是方法调用的形式,也不是扩展语义的形式..
----------------解决方案--------------------------------------------------------
谢谢17楼仁兄改之...
----------------解决方案--------------------------------------------------------
C没有重载,就不要画虎类猫了吧?
----------------解决方案--------------------------------------------------------
  相关解决方案