MR.OutMan的小窝
Bad programming is easy. Idiots can learn it in 21 days, even if they are Dummies.
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2011年11月 (3)
2011年10月 (1)
2011年9月 (3)
2010年11月 (1)
2010年9月 (1)
文章分类
暑假项目相关(2)
(rss)
随意写写一些小的问题(5)
(rss)
文章档案
2011年12月 (1)
2011年11月 (3)
2011年10月 (1)
2010年11月 (3)
2010年9月 (2)
相册
学校实验室
敬仰的技术大牛
群猪的blog,写的真多。。
一直膜拜的大牛,BlueWanderer
教会我了很多东西,经常一语惊醒梦中人
搜索
最新评论
阅读排行榜
1. 如果你有一台东芝的笔记本,又闲得蛋疼,装ubuntu,更是新手,好吧,你跟我一样- -(447)
2. source insight3.x不知吃unicode文件啊啊啊啊啊啊(197)
3. 装个gcc。(191)
4. linux下播放高比特率的歌曲,黑胶(179)
5. 今年做得最大的錯事.........(153)
评论排行榜
1. 我的blog终于下决心开通了,因为受到网易HR宣讲的时候感染,把学习的心路写在这个博客上(0)
2. 想了很多,随感(0)
3. 装个gcc。(0)
4. 如果你有一台东芝的笔记本,又闲得蛋疼,装ubuntu,更是新手,好吧,你跟我一样- -(0)
5. 今天蛋疼把(0)
Powered by:
博客园
模板提供:
沪江博客
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
暑假项目里面的一些东西之c写虚函数表
暑假那个玩意,写到最后发现所有的代码需要全部改,一个严峻的问题就是:c++的代码需要改成c然后再发布在dll上面,我的设计是用一个图形基类,然后每次重绘调用专门的虚函数形成多态。这样,改虚表这个问题就摆在我面前。
首先我们知道,虚函数在大部分编译器的实现都是在结构体起始处,放一个数组指针,这个指针指向一个表,表里面行一些函数指针。
然后继承大概就是一个has-a的关系,这样我的代码就开始写了。
1
#define
vfunMAX 2
2
typedef
struct
__tag_base
3
{
4
void
**
v_ptr;
5
/**/
/*
other member
*/
6
}
base
;
7
void
somefunc()
8
{
9
NULL;
10
}
11
12
void
Init(
base
*
pbase)
13
{
14
v_ptr
=
malloc(vfunMAX
*
sizeof
(
void
*
));
15
v_ptr[
0
]
=
&
somefunc;
16
v_ptr[
1
]
=
NULL;
17
/**/
/*
other Init
*/
18
}
19
20
就是类似这样代码实现了一个类的虚表然后在一个类的派生类只需要将虚函数表的相应位置替换掉就可以了,当然我们如果需要直观一点可以用一个枚举类型保存函数名的标号,然后调用即可。。。当然,这个是一个简易的模式,实际上c++的虚函数神马的比这个复杂的多,而且这个也不会出现c++里面很多难以理解情况~所有的情况都在掌握中,也不失为一件坏事,重要的时候,麻烦的改完代码,我也就完成了我的事。。。。
发表于 2010-11-11 03:35
MR.OutMan
阅读(116)
评论(0)
编辑
收藏
引用
所属分类:
暑假项目相关
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
暑假项目里面的一些东西之c写虚函数表
画项目中UML图遇到的一点小问题
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理