青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
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(太子)
閱讀(532)
評論(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
<
2011年2月
>
日
一
二
三
四
五
六
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
1
2
3
4
5
6
7
8
9
10
11
12
留言簿
(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學習
游戲外掛研究院
算是曾今國內眾多外掛高手的根據地吧 不過人心散了... 難現往日輝煌
搜索
積分與排名
積分 - 139014
排名 - 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 編程指南 (20603)
2.?[工具]VSS2005 下載(9356)
3.?C++ Builder 2007 破解文件(6776)
4.?NtProtectVirtualMemory(6680)
5.?[轉]RGB與YUV轉換(6016)
6.?Boost的狀態機庫教程(1) (5820)
7.?C++Builder2007 安裝辦法(4720)
8.?經典的XP主題Luna Element全集(3788)
9.?BCGControlBar Library Professional Edition v9.56(3508)
10.?發一個mir2的內掛代碼(3278)
評論排行榜
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.?發一個mir2的內掛代碼(5)
8.?更新了下TMD!幾張截圖(5)
9.?MSDN的Bug!(3)
10.?2007年5月 Windows XP Pro SP2 最新正版驗證破解文件(3)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 shaker(太子)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
久久在线观看视频
|
欧美深夜影院
|
免费国产自线拍一欧美视频
|
国产精品日韩在线
|
中文一区二区
|
亚洲激情小视频
|
久久久久久久网
|
国模私拍视频一区
|
久久裸体艺术
|
欧美在线精品免播放器视频
|
国产精品久久午夜夜伦鲁鲁
|
亚洲欧美日本伦理
|
亚洲午夜三级在线
|
国产精品欧美日韩一区
|
午夜精品久久
|
午夜国产精品视频
|
国内精品**久久毛片app
|
久久天堂精品
|
欧美粗暴jizz性欧美20
|
一卡二卡3卡四卡高清精品视频
|
亚洲国产欧美精品
|
国产精品igao视频网网址不卡日韩
|
亚洲天堂av在线免费
|
欧美一区二区三区在线观看视频
|
欧美大片在线观看一区二区
|
亚洲美女中出
|
一区二区三区欧美
|
国产日韩欧美不卡
|
免费成人激情视频
|
欧美伦理91
|
欧美一级视频精品观看
|
久久欧美肥婆一二区
|
99re成人精品视频
|
亚洲一本视频
|
亚洲国产精品123
|
99精品福利视频
|
国产一区二区三区在线播放免费观看
|
久久精品一区二区三区不卡
|
蜜臀av一级做a爰片久久
|
亚洲午夜黄色
|
久久久夜精品
|
亚洲自拍偷拍一区
|
久久精品亚洲精品国产欧美kt∨
|
亚洲欧洲一区二区天堂久久
|
一区二区三区黄色
|
亚洲国产日韩精品
|
亚洲天堂成人在线视频
|
国内精品福利
|
一区二区国产精品
|
1024国产精品
|
亚洲视频免费在线观看
|
亚洲国产精品专区久久
|
亚洲欧洲av一区二区
|
在线观看91精品国产麻豆
|
99伊人成综合
|
在线视频观看日韩
|
亚洲欧美成人一区二区三区
|
亚洲日韩中文字幕在线播放
|
亚洲综合电影一区二区三区
|
亚洲精品网址在线观看
|
欧美一区二区精品久久911
|
99精品国产热久久91蜜凸
|
久久久91精品国产一区二区精品
|
亚洲视频专区在线
|
欧美1区2区3区
|
久久深夜福利
|
国产精品剧情在线亚洲
|
亚洲国产日韩欧美在线动漫
|
伊人久久噜噜噜躁狠狠躁
|
亚洲一区二区三区乱码aⅴ
|
亚洲精品网站在线播放gif
|
久久狠狠亚洲综合
|
久久福利毛片
|
国产精品亚洲人在线观看
|
亚洲精品国产精品国产自
|
亚洲国产毛片完整版
|
久久国产精品网站
|
久久精品国产久精国产爱
|
国产精品久久久久久久久久久久久
|
亚洲欧洲综合另类
|
在线不卡欧美
|
久久久久久亚洲精品杨幂换脸
|
性欧美videos另类喷潮
|
国产精品久久久久久久久借妻
|
亚洲一区二区三区免费视频
|
在线看不卡av
|
久久国产精品久久国产精品
|
久久xxxx精品视频
|
国产麻豆一精品一av一免费
|
99综合在线
|
亚洲午夜视频在线
|
欧美日韩在线不卡一区
|
亚洲欧洲日本国产
|
亚洲免费观看
|
欧美日韩日韩
|
宅男噜噜噜66一区二区
|
亚洲综合二区
|
国产视频不卡
|
久久久九九九九
|
免费欧美高清视频
|
亚洲国产综合在线
|
欧美电影在线
|
一区二区久久久久
|
西西人体一区二区
|
国产三区精品
|
久久深夜福利免费观看
|
亚洲电影在线免费观看
|
日韩亚洲精品视频
|
国产精品国产三级国产普通话99
|
亚洲一区中文
|
另类av导航
|
亚洲美女精品久久
|
国产精品私人影院
|
老司机精品久久
|
99riav久久精品riav
|
久久成人精品无人区
|
亚洲国产精品久久久久
|
欧美日韩国产区一
|
香蕉久久夜色精品国产
|
欧美国产一区二区
|
亚洲女爱视频在线
|
黄色日韩精品
|
欧美日韩亚洲一区二区三区在线观看
|
亚洲电影第1页
|
欧美精品在线视频观看
|
午夜精品在线观看
|
亚洲成色www8888
|
性久久久久久久久久久久
|
亚洲欧洲精品一区二区
|
国产精品视频xxxx
|
女同性一区二区三区人了人一
|
99精品国产一区二区青青牛奶
|
久久精品一区中文字幕
|
日韩午夜av电影
|
很黄很黄激情成人
|
国产精品va在线播放
|
老司机久久99久久精品播放免费
|
在线亚洲欧美专区二区
|
亚洲丁香婷深爱综合
|
久久精品国产免费看久久精品
|
一本色道久久综合亚洲精品不
|
国产日韩欧美一区在线
|
欧美日韩国产成人在线观看
|
欧美中文在线免费
|
亚洲午夜女主播在线直播
|
亚洲高清123
|
久久亚洲精品一区二区
|
性伦欧美刺激片在线观看
|
亚洲卡通欧美制服中文
|
国产一区亚洲
|
国产精品影片在线观看
|
欧美日韩国产在线
|
欧美1级日本1级
|
一区二区高清视频
|
夜夜爽夜夜爽精品视频
|
激情国产一区
|
国产日韩视频一区二区三区
|
欧美特黄视频
|
欧美日韩国产二区
|
欧美激情欧美激情在线五月
|
久久久久国色av免费观看性色
|
亚洲欧美国产精品va在线观看
|
夜夜嗨av色一区二区不卡
|
亚洲国产天堂久久综合网
|
欧美成人精品
|
美女在线一区二区
|
麻豆九一精品爱看视频在线观看免费
|
亚洲欧美偷拍卡通变态
|
亚洲深夜影院
|
亚洲天堂免费观看
|
亚洲综合成人在线
|
亚洲男人的天堂在线
|
亚洲免费在线播放
|
亚洲伊人伊色伊影伊综合网
|
亚洲一区二区久久
|
亚洲午夜极品
|
亚洲亚洲精品三区日韩精品在线视频
|
99re这里只有精品6
|
99精品久久
|
亚洲天堂久久
|
羞羞漫画18久久大片
|
性欧美videos另类喷潮
|
久久国产黑丝
|
蜜桃av噜噜一区二区三区
|
狼狼综合久久久久综合网
|
久久综合九色欧美综合狠狠
|
蜜臀a∨国产成人精品
|
欧美福利视频在线
|
亚洲日本免费
|
亚洲在线电影
|
久久九九国产
|
欧美国产日本
|
国产精品ⅴa在线观看h
|
国产欧美一区二区三区国产幕精品
|
国产一区 二区 三区一级
|
在线观看欧美黄色
|
99国产精品久久久久久久久久
|
亚洲在线成人精品
|
久久人人爽国产
|
亚洲欧洲一区二区三区久久
|