青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
To Be C++
shaker's Blog
生當(dāng)作人杰,死亦為鬼雄,至今思項(xiàng)羽,不肯過(guò)江東。
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
隨筆-60 評(píng)論-111 文章-0 trackbacks-0
用C++擺弄了一個(gè)事件模型
參考了CPPblog上一位同學(xué)的文章
原文在這里
基本是照搬了代碼 但是不知道是作者沒有在VC71中測(cè)試 還是發(fā)出來(lái)的代碼還是有問(wèn)題的 我在VC71中編譯還是有點(diǎn)點(diǎn)小小的曲折
下面是我自己根據(jù)VC71修改的!
1
class
CEvent;
2
3
class
CFunImpl
4
{
5
public
:
6
CFunImpl()
{}
7
virtual
~
CFunImpl()
{}
8
virtual
void
operator
()(CEvent
&
e)
=
0
;
9
virtual
bool
operator
==
(
const
CFunImpl
&
fun)
=
0
;
10
virtual
CFunImpl
*
Clone()
=
0
;
11
}
;
12
13
template
<
typename ClassName
>
14
class
CMemberFunc :
public
CFunImpl
15
{
16
public
:
17
18
typedef CMemberFunc
<
ClassName
>
this_type;
19
typedef
void
(ClassName::
*
fEventHandler) ( CEvent
&
e );
20
21
CMemberFunc( ClassName
&
obj, fEventHandler impl ) : m_Object(obj), m_pImpl(impl)
{}
22
23
void
operator
()( CEvent
&
e )
24
{
25
if
( m_pImpl
!=
NULL ) (m_Object.
*
(m_pImpl))( e );
26
}
27
28
CFunImpl
*
Clone()
29
{
30
return
new
this_type(m_Object, m_pImpl);
31
}
32
33
bool
operator
==
(
const
CFunImpl
&
fun)
34
{
35
if
( typeid(
*
this
)
==
typeid(fun) )
36
{
37
const
this_type
&
rFun
=
dynamic_cast
<
const
this_type
&
>
(fun);
38
39
return
(
&
m_Object
==
&
rFun.m_Object
&&
m_pImpl
==
rFun.m_pImpl);
40
}
41
42
return
false
;
43
}
44
45
virtual
~
CMemberFunc()
46
{
47
}
48
protected
:
49
ClassName
&
m_Object;
50
fEventHandler m_pImpl;
51
}
;
52
53
class
CStaticFunc :
public
CFunImpl
54
{
55
public
:
56
typedef
void
(
*
fEventHandler) ( CEvent
&
e );
57
58
CStaticFunc( fEventHandler impl ) : m_pImpl(impl)
{}
59
60
void
operator
()( CEvent
&
e )
61
{
62
if
( m_pImpl
!=
NULL ) m_pImpl( e );
63
}
64
65
CFunImpl
*
Clone()
66
{
67
return
new
CStaticFunc(m_pImpl);
68
}
69
70
bool
operator
==
(
const
CFunImpl
&
fun)
71
{
72
if
( typeid(
*
this
)
==
typeid(fun) )
73
{
74
const
CStaticFunc
&
rFun
=
dynamic_cast
<
const
CStaticFunc
&
>
(fun);
75
76
return
(m_pImpl
==
rFun.m_pImpl);
77
}
78
79
return
false
;
80
}
81
82
virtual
~
CStaticFunc()
83
{
84
}
85
protected
:
86
fEventHandler m_pImpl;
87
}
;
88
89
class
CEventHandler
90
{
91
private
:
92
void
Clear()
{
if
(m_pImpl)
{delete m_pImpl ;m_pImpl
=
NULL ;}
}
93
CFunImpl
*
m_pImpl;
94
public
:
95
~
CEventHandler()
96
{
97
Clear();
98
}
99
template
<
typename ClassName
>
100
CEventHandler( ClassName
&
obj,
void
(ClassName::
*
impl)(CEvent
&
) ) : m_pImpl(
new
CMemberFunc
<
ClassName
>
(obj,impl) )
{}
101
CEventHandler(
void
(
*
impl)(CEvent
&
) ) : m_pImpl(
new
CStaticFunc(impl) )
{}
102
CEventHandler(
const
CEventHandler
&
fun ) : m_pImpl( NULL )
{
*
this
=
fun; }
103
void
operator
() ( CEvent
&
e )
104
{
105
(
*
m_pImpl)(e);
106
}
107
CEventHandler
&
operator
=
(
const
CEventHandler
&
fun )
108
{
109
Clear();
110
if
(fun.m_pImpl) m_pImpl
=
fun.m_pImpl
->
Clone();
111
return
*
this
;
112
}
113
bool
operator
==
(
const
CEventHandler
&
handler )
114
{
115
if
( m_pImpl
==
NULL
||
handler.m_pImpl
==
NULL )
return
true
;
116
if
( typeid(
*
m_pImpl)
==
typeid(
*
(handler.m_pImpl)) )
117
{
118
return
(
*
m_pImpl)
==
(
*
(handler.m_pImpl));
119
}
120
return
false
;
121
}
122
}
;
123
124
class
CEvent
125
{
126
private
:
127
std::list
<
CEventHandler
>
m_Funcs;
128
void
Register( CEventHandler handle )
129
{
130
m_Funcs.push_back(handle);
131
}
132
void
UnRegister(
const
CEventHandler
&
handler )
133
{
134
m_Funcs.remove(handler);
135
}
136
void
*
lpData;
137
public
:
138
void
*
GetPointer()
{
return
lpData; }
139
CEvent
&
operator
<<
(
const
CEventHandler
&
handler )
140
{
141
Register ( handler );
142
return
*
this
;
143
}
144
145
CEvent
&
operator
>>
(
const
CEventHandler
&
handler )
146
{
147
UnRegister ( handler );
148
return
*
this
;
149
}
150
151
void
operator
( )(
void
*
pData
=
NULL )
152
{
153
lpData
=
pData;
154
for
(std::list
<
CEventHandler
>
::iterator pos
=
m_Funcs.begin(); pos
!=
m_Funcs.end();
++
pos )
155
(
*
pos)(
*
this
);
156
}
157
}
;
158
編譯的時(shí)候要打開RTTI!
posted on 2006-09-04 12:27
shaker(太子)
閱讀(536)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
C++
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
相關(guān)文章:
Relocate SVN
又是一個(gè)APIHOOK
[zt] Windows APC機(jī)制
[zt]談?wù)剬?duì)APC的一點(diǎn)理解
NtProtectVirtualMemory
【轉(zhuǎn)帖】Windows網(wǎng)絡(luò)體系結(jié)構(gòu)總結(jié)
Pro OGRE 3D Programming 中文翻譯版本0.2.0
Boost的狀態(tài)機(jī)庫(kù)教程 補(bǔ)充
Boost的狀態(tài)機(jī)庫(kù)教程(3)
Boost的狀態(tài)機(jī)庫(kù)教程(2)
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
給我發(fā)QQ消息
我的微博
libghttp
win7sp1
<
2006年9月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
留言簿
(25)
給我留言
查看公開留言
查看私人留言
隨筆分類
(52)
C++(37)
Delphi(2)
Utility(10)
Windows Kernel(3)
隨筆檔案
(60)
2014年4月 (1)
2011年12月 (1)
2011年9月 (1)
2011年7月 (1)
2011年5月 (2)
2011年3月 (1)
2011年2月 (3)
2011年1月 (1)
2010年8月 (6)
2010年3月 (1)
2009年11月 (1)
2009年6月 (1)
2009年5月 (1)
2008年8月 (1)
2008年6月 (1)
2008年3月 (1)
2008年2月 (1)
2007年10月 (2)
2007年9月 (1)
2007年8月 (2)
2007年7月 (1)
2007年5月 (2)
2007年4月 (2)
2007年2月 (2)
2006年12月 (7)
2006年11月 (2)
2006年10月 (2)
2006年9月 (12)
精彩blog
#ant
boost源碼剖析
CppExplore
系統(tǒng)設(shè)計(jì)系列文章
Learning boost
飯中淹的避難所
懶人日志
笑笑小生的博客
沐楓小筑
微妙的平衡
有一些HGE的技巧
鏈接
C++博客
就是這里啦
Code Project
大名鼎鼎的網(wǎng)站 全e文
CSDN.net
感覺是個(gè)大雜燴 不專精 不過(guò)但凡國(guó)內(nèi)的程序員大多也會(huì)去那看看的
VC知識(shí)庫(kù)
VC資料網(wǎng)站 收集的還算多的 不過(guò)還需要向CodeProject學(xué)習(xí)
游戲外掛研究院
算是曾今國(guó)內(nèi)眾多外掛高手的根據(jù)地吧 不過(guò)人心散了... 難現(xiàn)往日輝煌
搜索
積分與排名
積分 - 139237
排名 - 189
最新評(píng)論
1.?re: [ZT]C++ Boost Thread 編程指南
謝謝你的分享。
--ALPg
2.?re: [工具]VSS2005 下載
@周超
用迅雷試試
--shaker
3.?re: [工具]VSS2005 下載
。。。
--。
4.?re: [工具]VSS2005 下載
gdfg
--fd
5.?re: [工具]VSS2005 下載
下不了啊。404錯(cuò)誤
--周超
閱讀排行榜
1.?[ZT]C++ Boost Thread 編程指南 (20606)
2.?[工具]VSS2005 下載(9358)
3.?C++ Builder 2007 破解文件(6780)
4.?NtProtectVirtualMemory(6685)
5.?[轉(zhuǎn)]RGB與YUV轉(zhuǎn)換(6021)
6.?Boost的狀態(tài)機(jī)庫(kù)教程(1) (5830)
7.?C++Builder2007 安裝辦法(4724)
8.?經(jīng)典的XP主題Luna Element全集(3790)
9.?BCGControlBar Library Professional Edition v9.56(3518)
10.?發(fā)一個(gè)mir2的內(nèi)掛代碼(3281)
評(píng)論排行榜
1.?write a simple os with asm&c(23)
2.?[工具]VSS2005 下載(13)
3.?BCGControlBar Library Professional Edition v9.56(10)
4.?Visual Assist X v10.3.1534 build 2006.09.02 cracked dll's by Av0id(8)
5.?傳奇2TMD(8)
6.?C++ Builder 2007 破解文件(7)
7.?發(fā)一個(gè)mir2的內(nèi)掛代碼(5)
8.?更新了下TMD!幾張截圖(5)
9.?MSDN的Bug!(3)
10.?2007年5月 Windows XP Pro SP2 最新正版驗(yàn)證破解文件(3)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 shaker(太子)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲欧洲av一区二区
|
久久久久国产一区二区三区
|
一区二区高清视频
|
亚洲激情成人
|
日韩视频免费观看高清完整版
|
亚洲人妖在线
|
一本色道久久综合亚洲精品小说
|
一本一本久久a久久精品牛牛影视
|
一本色道88久久加勒比精品
|
性一交一乱一区二区洋洋av
|
欧美亚洲综合另类
|
久久久蜜臀国产一区二区
|
老色鬼久久亚洲一区二区
|
欧美aⅴ一区二区三区视频
|
亚洲福利电影
|
99re这里只有精品6
|
亚洲视频电影在线
|
欧美一级片在线播放
|
六月婷婷久久
|
欧美视频四区
|
国产主播一区
|
亚洲精品一区二区三区99
|
亚洲欧美日本精品
|
久久久蜜臀国产一区二区
|
亚洲国产精品一区二区www
|
99精品视频免费全部在线
|
亚洲欧美综合v
|
久久一综合视频
|
欧美日韩另类综合
|
国产亚洲欧美一区
|
日韩一级不卡
|
久久狠狠久久综合桃花
|
美日韩精品免费观看视频
|
99热精品在线
|
久久久久久亚洲综合影院红桃
|
欧美精品www在线观看
|
国产手机视频精品
|
亚洲精品乱码久久久久久久久
|
亚洲欧美日韩国产成人精品影院
|
久久亚洲私人国产精品va媚药
|
91久久国产精品91久久性色
|
亚洲一二区在线
|
蜜臀av性久久久久蜜臀aⅴ四虎
|
亚洲精品乱码视频
|
国产欧美日韩精品专区
|
亚洲高清免费视频
|
午夜精品国产
|
亚洲国产裸拍裸体视频在线观看乱了中文
|
亚洲一级影院
|
欧美日本在线播放
|
激情小说另类小说亚洲欧美
|
亚洲剧情一区二区
|
欧美在线视频全部完
|
亚洲国产一区在线观看
|
欧美中文字幕不卡
|
欧美日韩在线视频一区二区
|
亚洲国产精品黑人久久久
|
欧美一区二区观看视频
|
亚洲精品中文字
|
久久久久久久999精品视频
|
国产精品国产
|
99精品黄色片免费大全
|
麻豆精品精华液
|
午夜精品99久久免费
|
欧美精品二区三区四区免费看视频
|
国内成人精品视频
|
午夜精品影院
|
亚洲色诱最新
|
欧美人与禽猛交乱配
|
亚洲高清激情
|
久久在线视频在线
|
午夜精品久久久久久久99水蜜桃
|
亚洲一区欧美二区
|
亚洲国产精品99久久久久久久久
|
久久黄色级2电影
|
国产精品日韩欧美一区二区三区
|
亚洲三级观看
|
久久亚洲一区
|
狠狠v欧美v日韩v亚洲ⅴ
|
久久国产精品网站
|
亚洲欧美国产精品va在线观看
|
国产精品黄视频
|
亚洲免费影视
|
亚洲一区二区三区乱码aⅴ
|
欧美视频三区在线播放
|
制服丝袜激情欧洲亚洲
|
亚洲精品视频一区二区三区
|
欧美激情女人20p
|
亚洲人在线视频
|
欧美激情一区二区三区成人
|
久久夜色精品国产噜噜av
|
亚洲成色999久久网站
|
蜜臀a∨国产成人精品
|
久久久99精品免费观看不卡
|
韩曰欧美视频免费观看
|
久久综合色88
|
久久最新视频
|
最新国产の精品合集bt伙计
|
欧美黄色网络
|
欧美绝品在线观看成人午夜影视
|
一区二区欧美在线观看
|
亚洲每日在线
|
国产精品久久久久久av下载红粉
|
亚洲自拍高清
|
午夜久久资源
|
在线观看成人小视频
|
欧美成人一区二区三区在线观看
|
美女任你摸久久
|
亚洲精品日本
|
一区二区三区 在线观看视频
|
国产精品v片在线观看不卡
|
销魂美女一区二区三区视频在线
|
午夜一级久久
|
亚洲国产91精品在线观看
|
亚洲国产成人久久综合一区
|
欧美精品一区二区三区四区
|
亚洲无毛电影
|
午夜精品成人在线视频
|
雨宫琴音一区二区在线
|
亚洲激情不卡
|
国产精品入口
|
麻豆av一区二区三区
|
欧美成人一区二区三区
|
国产精品99久久久久久久久久久久
|
最新亚洲一区
|
这里只有精品丝袜
|
好吊色欧美一区二区三区视频
|
亚洲成色www8888
|
亚洲日本欧美天堂
|
国产精品成人aaaaa网站
|
久久精品99国产精品
|
免费成年人欧美视频
|
亚洲午夜精品一区二区
|
欧美一区二区三区久久精品茉莉花
|
尤物精品国产第一福利三区
|
亚洲另类黄色
|
国内自拍一区
|
亚洲美女av在线播放
|
国产日韩欧美夫妻视频在线观看
|
欧美电影在线观看完整版
|
国产精品国产三级国产专播精品人
|
久久久久国色av免费观看性色
|
美女网站在线免费欧美精品
|
亚洲一区999
|
久久夜色精品
|
性视频1819p久久
|
欧美大片在线看免费观看
|
欧美在线观看视频在线
|
欧美精品国产精品
|
久久久国产精彩视频美女艺术照福利
|
欧美激情中文字幕在线
|
久久成人久久爱
|
欧美精品在线一区
|
久久天堂国产精品
|
国产精品大全
|
亚洲欧洲日韩综合二区
|
国内成人精品2018免费看
|
欧美日韩三级一区二区
|
久久视频在线免费观看
|
国产精品久久久久国产a级
|
欧美激情aⅴ一区二区三区
|
国产日韩综合
|
一二三区精品福利视频
|
91久久线看在观草草青青
|
性欧美video另类hd性玩具
|
一区二区日本视频
|
欧美成人a视频
|
久久久久久一区二区三区
|
国产精品h在线观看
|
亚洲国产一区二区三区在线播
|
狠狠色狠狠色综合日日小说
|
亚洲一区二区在线看
|
亚洲色图自拍
|
欧美激情免费观看
|
欧美福利视频在线观看
|
国内精品视频在线观看
|
亚洲欧美国产77777
|
亚洲一级片在线观看
|
欧美日本乱大交xxxxx
|
亚洲国产精品成人
|
亚洲国产黄色片
|
久久精品视频在线观看
|
久久久国际精品
|
国产免费一区二区三区香蕉精
|
亚洲裸体视频
|
日韩小视频在线观看专区
|
欧美成年人在线观看
|
欧美成人精精品一区二区频
|
国内精品久久久久久久97牛牛
|
亚洲欧美日韩综合国产aⅴ
|
亚洲欧美一区二区视频
|
国产精品国内视频
|
亚洲午夜av电影
|
亚洲一区二区四区
|
欧美性猛交视频
|
一区二区三区四区五区在线
|
中文一区二区在线观看
|
欧美色精品在线视频
|
亚洲视频在线一区
|
亚洲女女做受ⅹxx高潮
|