青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
To Be C++
shaker's Blog
生當作人杰,死亦為鬼雄,至今思項羽,不肯過江東。
首頁
新隨筆
聯系
聚合
管理
隨筆-60 評論-111 文章-0 trackbacks-0
用C++擺弄了一個事件模型
參考了CPPblog上一位同學的文章
原文在這里
基本是照搬了代碼 但是不知道是作者沒有在VC71中測試 還是發出來的代碼還是有問題的 我在VC71中編譯還是有點點小小的曲折
下面是我自己根據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
編譯的時候要打開RTTI!
posted on 2006-09-04 12:27
shaker(太子)
閱讀(539)
評論(0)
編輯
收藏
引用
所屬分類:
C++
只有注冊用戶
登錄
后才能發表評論。
相關文章:
Relocate SVN
又是一個APIHOOK
[zt] Windows APC機制
[zt]談談對APC的一點理解
NtProtectVirtualMemory
【轉帖】Windows網絡體系結構總結
Pro OGRE 3D Programming 中文翻譯版本0.2.0
Boost的狀態機庫教程 補充
Boost的狀態機庫教程(3)
Boost的狀態機庫教程(2)
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
給我發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
系統設計系列文章
Learning boost
飯中淹的避難所
懶人日志
笑笑小生的博客
沐楓小筑
微妙的平衡
有一些HGE的技巧
鏈接
C++博客
就是這里啦
Code Project
大名鼎鼎的網站 全e文
CSDN.net
感覺是個大雜燴 不專精 不過但凡國內的程序員大多也會去那看看的
VC知識庫
VC資料網站 收集的還算多的 不過還需要向CodeProject學習
游戲外掛研究院
算是曾今國內眾多外掛高手的根據地吧 不過人心散了... 難現往日輝煌
搜索
積分與排名
積分 - 139437
排名 - 189
最新評論
1.?re: [ZT]C++ Boost Thread 編程指南
謝謝你的分享。
--ALPg
2.?re: [工具]VSS2005 下載
@周超
用迅雷試試
--shaker
3.?re: [工具]VSS2005 下載
。。。
--。
4.?re: [工具]VSS2005 下載
gdfg
--fd
5.?re: [工具]VSS2005 下載
下不了啊。404錯誤
--周超
閱讀排行榜
1.?[ZT]C++ Boost Thread 編程指南 (20614)
2.?[工具]VSS2005 下載(9359)
3.?C++ Builder 2007 破解文件(6783)
4.?NtProtectVirtualMemory(6692)
5.?[轉]RGB與YUV轉換(6023)
6.?Boost的狀態機庫教程(1) (5838)
7.?C++Builder2007 安裝辦法(4730)
8.?經典的XP主題Luna Element全集(3795)
9.?BCGControlBar Library Professional Edition v9.56(3530)
10.?發一個mir2的內掛代碼(3285)
評論排行榜
1.?write a simple os with asm&c(23)
2.?[工具]VSS2005 下載(13)
3.?BCGControlBar Library Professional Edition v9.56(10)
4.?傳奇2TMD(8)
5.?Visual Assist X v10.3.1534 build 2006.09.02 cracked dll's by Av0id(8)
6.?C++ Builder 2007 破解文件(7)
7.?發一個mir2的內掛代碼(5)
8.?更新了下TMD!幾張截圖(5)
9.?以前寫的一個網絡流封包類(3)
10.?2007年5月 Windows XP Pro SP2 最新正版驗證破解文件(3)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 shaker(太子)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲国产国产亚洲一二三
|
亚洲剧情一区二区
|
香蕉国产精品偷在线观看不卡
|
欧美国产一区二区在线观看
|
亚洲高清久久久
|
欧美r片在线
|
欧美精品在线视频观看
|
在线一区观看
|
亚洲天堂网在线观看
|
国精品一区二区三区
|
免费成人黄色av
|
欧美freesex交免费视频
|
日韩午夜精品视频
|
亚洲视频欧美在线
|
国内精品国产成人
|
亚洲观看高清完整版在线观看
|
欧美91大片
|
亚洲欧美福利一区二区
|
欧美亚洲免费电影
|
亚洲日本一区二区
|
国产精品99久久久久久宅男
|
国产永久精品大片wwwapp
|
欧美国产精品一区
|
国产精品国产馆在线真实露脸
|
欧美一区二区三区久久精品
|
日韩一级精品视频在线观看
|
亚洲免费观看
|
国产一区在线视频
|
99精品视频一区
|
国产一区再线
|
一区二区三区福利
|
在线成人av网站
|
一区二区三区日韩精品视频
|
好吊妞这里只有精品
|
日韩亚洲欧美精品
|
亚洲国产天堂久久综合
|
亚洲香蕉网站
|
一本一道久久综合狠狠老精东影业
|
亚洲精品国精品久久99热
|
国产精品久久久久久av福利软件
|
久久视频在线视频
|
国产精品yjizz
|
亚洲国产精品va在线观看黑人
|
国产精品红桃
|
亚洲日本成人女熟在线观看
|
国精品一区二区三区
|
亚洲一区二区三区中文字幕
|
亚洲精品日韩在线观看
|
久久久国产一区二区
|
欧美一区二区三区免费观看
|
亚洲自拍三区
|
中日韩美女免费视频网站在线观看
|
久久久久看片
|
久久久999精品免费
|
欧美性大战久久久久久久蜜臀
|
欧美激情中文不卡
|
亚洲国产日韩在线
|
老鸭窝亚洲一区二区三区
|
久久久欧美一区二区
|
国产日韩久久
|
欧美一二三区在线观看
|
久久国内精品视频
|
国产精品羞羞答答xxdd
|
亚洲天堂成人
|
午夜精品在线视频
|
国产精品青草久久
|
午夜精品久久久久影视
|
香港久久久电影
|
国产精品一区二区视频
|
午夜精品视频在线
|
久久久久国产免费免费
|
国产一区在线播放
|
久久久一区二区
|
欧美激情视频一区二区三区在线播放
|
国内精品国产成人
|
女人香蕉久久**毛片精品
|
欧美成人精品一区
|
亚洲美女在线视频
|
欧美色123
|
午夜精品久久久久久久久久久久久
|
亚洲欧洲视频在线
|
欧美日本在线
|
亚洲一区二区精品视频
|
午夜视频在线观看一区二区三区
|
国产精品午夜在线
|
久久精品国产一区二区电影
|
一区二区高清视频在线观看
|
欧美日韩国产一区二区
|
亚洲影视在线
|
欧美va亚洲va国产综合
|
亚洲精品日韩在线
|
国产精品欧美久久
|
久久久www成人免费毛片麻豆
|
欧美激情视频给我
|
亚洲欧美精品suv
|
红桃视频成人
|
欧美日韩视频免费播放
|
亚洲欧美日韩综合aⅴ视频
|
麻豆国产精品va在线观看不卡
|
亚洲第一在线综合网站
|
欧美视频精品在线观看
|
久久久青草婷婷精品综合日韩
|
亚洲国产成人一区
|
欧美影院精品一区
|
99国产精品
|
韩国精品久久久999
|
欧美另类一区
|
久久精品中文字幕一区
|
最新中文字幕亚洲
|
久久久精品2019中文字幕神马
|
99精品国产热久久91蜜凸
|
国产婷婷色一区二区三区四区
|
免费永久网站黄欧美
|
亚洲自拍16p
|
亚洲麻豆视频
|
欧美韩日一区二区
|
久久国产精品一区二区三区
|
日韩视频在线免费观看
|
韩国成人精品a∨在线观看
|
欧美三级午夜理伦三级中文幕
|
久久精品国产免费看久久精品
|
亚洲视频综合在线
|
亚洲日本免费电影
|
欧美成人黄色小视频
|
久久久久亚洲综合
|
香蕉尹人综合在线观看
|
中日韩在线视频
|
日韩图片一区
|
亚洲国产精品嫩草影院
|
黑人一区二区
|
国产欧美成人
|
国产精品青草久久
|
国产精品久久久久久久久久久久久久
|
久久综合狠狠综合久久综合88
|
亚洲欧美制服另类日韩
|
一区二区三区偷拍
|
亚洲视频免费
|
中文一区字幕
|
亚洲午夜国产成人av电影男同
|
亚洲精品乱码视频
|
亚洲精品久久久久久久久久久
|
久热re这里精品视频在线6
|
久久综合九色
|
麻豆乱码国产一区二区三区
|
久久久久久久综合色一本
|
久久久久久久久伊人
|
久久久免费精品
|
另类成人小视频在线
|
美女精品国产
|
亚洲国产精品成人va在线观看
|
欧美激情一区二区三区在线
|
欧美成人亚洲
|
最新精品在线
|
亚洲美女视频
|
亚洲一区二区动漫
|
久久国产精品黑丝
|
久久久999
|
欧美成人午夜视频
|
欧美日韩国产在线看
|
国产精品家庭影院
|
国产亚洲精品久久久
|
一区在线观看
|
夜夜嗨av色一区二区不卡
|
亚洲欧美国产精品专区久久
|
香蕉久久久久久久av网站
|
久久午夜视频
|
亚洲高清不卡在线
|
一本大道久久a久久综合婷婷
|
亚洲一区二区在线免费观看视频
|
亚洲综合国产激情另类一区
|
欧美一区免费
|
欧美精品日韩综合在线
|
国产精品区二区三区日本
|
尤物yw午夜国产精品视频
|
日韩视频在线一区
|
久久精品一区二区三区四区
|
亚洲高清一二三区
|
亚洲一区二区不卡免费
|
狂野欧美一区
|
国产精品久久波多野结衣
|
韩国一区电影
|
宅男精品视频
|
裸体一区二区三区
|
亚洲色在线视频
|
久久亚洲风情
|
国产精品欧美日韩一区
|
亚洲人成欧美中文字幕
|
欧美在线观看视频在线
|
亚洲激情一区二区三区
|
欧美一区二区在线免费播放
|
欧美激情国产日韩
|
国内成+人亚洲
|
亚洲综合精品四区
|
亚洲成色777777在线观看影院
|
一本色道久久综合亚洲精品不卡
|
国产精品一区二区你懂得
|
亚洲国产裸拍裸体视频在线观看乱了中文
|
欧美精品久久久久久
|
国内精品**久久毛片app
|
亚洲一区二区三区精品动漫
|