青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
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(太子)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
欧美成人a∨高清免费观看
|
91久久久久久久久
|
欧美国产欧美亚州国产日韩mv天天看完整
|
欧美激情亚洲另类
|
久久久水蜜桃av免费网站
|
欧美阿v一级看视频
|
久久久久国产精品一区三寸
|
午夜国产精品视频免费体验区
|
亚洲国产成人精品久久
|
午夜精品免费
|
亚洲影视在线播放
|
欧美精品一区二区三区蜜桃
|
中文日韩在线视频
|
免费成人av在线看
|
久久久噜噜噜久久人人看
|
欧美日韩一区三区
|
亚洲国产女人aaa毛片在线
|
国内精品视频一区
|
午夜视频一区在线观看
|
亚洲女人小视频在线观看
|
欧美精品一区二区三区蜜桃
|
亚洲成人在线视频网站
|
欧美一区二区三区免费视频
|
亚洲欧美电影在线观看
|
欧美精品一区二区三区在线看午夜
|
美女国产精品
|
樱花yy私人影院亚洲
|
亚欧美中日韩视频
|
欧美资源在线
|
国产午夜精品久久
|
欧美资源在线观看
|
久久米奇亚洲
|
亚洲第一伊人
|
欧美成人精品h版在线观看
|
亚洲国产第一
|
一本色道久久综合亚洲精品小说
|
欧美精品二区
|
99视频精品在线
|
欧美亚洲一区三区
|
国产一区二区三区不卡在线观看
|
欧美一区二区三区免费在线看
|
亚洲永久在线
|
国产精品伦理
|
欧美在线免费视屏
|
免费看成人av
|
日韩亚洲欧美成人
|
国产精品高潮在线
|
欧美在线3区
|
欧美激情 亚洲a∨综合
|
在线视频日韩精品
|
国产视频久久久久
|
久久人人爽人人爽
|
最新国产成人在线观看
|
亚洲一区二区三区精品动漫
|
国产精品高潮呻吟
|
久久精品国产第一区二区三区
|
欧美插天视频在线播放
|
一区二区三区回区在观看免费视频
|
国产精品va在线
|
久久久亚洲影院你懂的
|
亚洲激情第一页
|
欧美在线高清
|
亚洲精品欧美激情
|
国产噜噜噜噜噜久久久久久久久
|
久久精品国产亚洲一区二区
|
亚洲人成网在线播放
|
欧美一区二区
|
亚洲欧洲日夜超级视频
|
国产精品家教
|
欧美高清不卡在线
|
午夜精品在线看
|
亚洲人成免费
|
久久综合久久美利坚合众国
|
中文亚洲欧美
|
…久久精品99久久香蕉国产
|
欧美日韩一区二区在线观看
|
久久久久se
|
亚洲一区二区欧美日韩
|
欧美激情精品久久久久久免费印度
|
亚洲欧美电影院
|
亚洲第一毛片
|
国产日韩欧美夫妻视频在线观看
|
欧美精品乱码久久久久久按摩
|
欧美一区二区高清在线观看
|
亚洲精品一区二区在线
|
蜜乳av另类精品一区二区
|
亚洲一区二区视频
|
亚洲激情欧美
|
一区二区三区在线高清
|
国产精品色网
|
欧美日韩国产成人在线观看
|
久久久久久国产精品mv
|
亚洲欧美久久
|
亚洲视频欧洲视频
|
亚洲日本va午夜在线电影
|
久久亚洲春色中文字幕久久久
|
亚洲综合999
|
一区二区三区高清视频在线观看
|
亚洲国产裸拍裸体视频在线观看乱了中文
|
国产精品午夜久久
|
欧美午夜精品久久久久久孕妇
|
国产日韩视频
|
国产精品免费区二区三区观看
|
欧美—级在线免费片
|
蜜臀va亚洲va欧美va天堂
|
久久国产精品黑丝
|
欧美一区三区三区高中清蜜桃
|
亚洲一区3d动漫同人无遮挡
|
一本色道久久综合亚洲精品小说
|
亚洲国产精品久久久久秋霞影院
|
日韩一级二级三级
|
亚洲靠逼com
|
一区二区三区四区国产
|
夜色激情一区二区
|
av成人老司机
|
亚洲深夜影院
|
亚洲一区视频在线
|
亚洲一区3d动漫同人无遮挡
|
亚洲一级黄色片
|
午夜精品久久一牛影视
|
午夜精品在线视频
|
欧美一区亚洲一区
|
久久精品主播
|
免费成人毛片
|
亚洲激情自拍
|
一本色道久久综合亚洲精品不
|
一区二区三区久久
|
亚洲欧美日韩第一区
|
欧美亚洲视频一区二区
|
欧美在线二区
|
裸体丰满少妇做受久久99精品
|
欧美sm重口味系列视频在线观看
|
欧美福利一区
|
国产精品久久中文
|
国产一区在线观看视频
|
激情五月***国产精品
|
亚洲电影激情视频网站
|
av72成人在线
|
久久精品视频在线看
|
欧美成人免费观看
|
a4yy欧美一区二区三区
|
亚洲制服少妇
|
美女视频网站黄色亚洲
|
欧美日韩亚洲一区在线观看
|
国产精品永久免费在线
|
亚洲国产乱码最新视频
|
亚洲无限av看
|
老司机午夜精品视频
|
亚洲精品乱码久久久久久日本蜜臀
|
欧美二区在线
|
99亚洲伊人久久精品影院红桃
|
亚洲免费一区二区
|
免费欧美电影
|
国产精品久久久亚洲一区
|
精品99一区二区三区
|
亚洲理伦在线
|
蜜桃视频一区
|
中文久久精品
|
免费观看在线综合
|
国产欧美日韩综合一区在线观看
|
在线观看视频免费一区二区三区
|
9国产精品视频
|
老司机免费视频久久
|
亚洲天堂激情
|
欧美精品综合
|
亚洲高清久久久
|
欧美在线在线
|
妖精视频成人观看www
|
久久久久久久波多野高潮日日
|
国产精品成人v
|
99精品热6080yy久久
|
久热re这里精品视频在线6
|
亚洲午夜久久久
|
欧美日韩国产不卡
|
最近中文字幕日韩精品
|
亚洲青色在线
|
久久综合国产精品台湾中文娱乐网
|
国产精品视频xxx
|
一区二区三区|亚洲午夜
|
蜜臀va亚洲va欧美va天堂
|
午夜精品久久
|
国产精品亚洲一区
|
亚洲午夜一区二区三区
|
亚洲黄色在线看
|
另类激情亚洲
|
精品动漫3d一区二区三区免费版
|
国产精品久久久久一区二区三区共
|
亚洲精品乱码久久久久久黑人
|
久久爱www.
|
亚洲图片在线观看
|
欧美日韩精品一区二区天天拍小说
|
亚洲国产精品一区在线观看不卡
|
久久精品亚洲精品
|
亚洲免费在线观看
|
国产精品你懂的在线欣赏
|
在线视频一区观看
|
亚洲精品一区二区三区不
|
欧美大片在线观看一区二区
|
亚洲大片精品永久免费
|
免费欧美在线视频
|