Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
導航
C++博客
首頁
新隨筆
聯系
聚合
管理
<
2012年3月
>
日
一
二
三
四
五
六
26
27
28
29
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
31
1
2
3
4
5
6
7
統計
隨筆 - 379
文章 - 2
評論 - 439
引用 - 0
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(26)
給我留言
查看公開留言
查看私人留言
隨筆分類
(335)
aspx/js
(rss)
boost庫等(9)
(rss)
Cef(2)
(rss)
Cef/Chrome(1)
(rss)
Game引擎(82)
(rss)
JAVA(1)
(rss)
Java Antroid(10)
(rss)
OpenGL/DX(1)
(rss)
Python腳本(7)
(rss)
QT編程(149)
(rss)
QT源碼分析(2)
(rss)
UML
(rss)
編程基礎(12)
(rss)
軟件調試(1)
(rss)
軟件工程(5)
(rss)
設計模式(7)
(rss)
數學建模(1)
(rss)
網頁搜素(2)
(rss)
音頻視頻(17)
(rss)
雜項(26)
(rss)
隨筆檔案
(379)
2019年9月 (20)
2019年8月 (20)
2019年6月 (1)
2019年3月 (1)
2018年6月 (1)
2017年9月 (5)
2017年5月 (2)
2017年4月 (2)
2017年3月 (4)
2016年10月 (3)
2016年8月 (1)
2016年6月 (1)
2016年5月 (1)
2016年4月 (6)
2016年3月 (2)
2016年2月 (2)
2016年1月 (4)
2015年12月 (5)
2015年11月 (3)
2015年10月 (2)
2015年8月 (12)
2015年7月 (2)
2015年6月 (1)
2015年1月 (1)
2014年12月 (4)
2014年11月 (2)
2014年6月 (1)
2014年4月 (1)
2014年3月 (1)
2013年12月 (2)
2013年11月 (1)
2013年10月 (3)
2013年9月 (1)
2013年8月 (2)
2013年7月 (2)
2013年6月 (3)
2013年4月 (1)
2013年2月 (4)
2013年1月 (9)
2012年12月 (3)
2012年11月 (1)
2012年10月 (2)
2012年9月 (2)
2012年8月 (2)
2012年7月 (2)
2012年6月 (3)
2012年5月 (7)
2012年4月 (4)
2012年3月 (4)
2012年1月 (2)
2011年12月 (8)
2011年11月 (13)
2011年9月 (6)
2011年8月 (10)
2011年7月 (1)
2011年6月 (4)
2011年5月 (12)
2011年4月 (4)
2011年3月 (19)
2011年1月 (1)
2010年12月 (3)
2010年11月 (2)
2010年10月 (4)
2010年9月 (6)
2010年8月 (11)
2010年7月 (4)
2010年6月 (11)
2010年5月 (15)
2010年4月 (28)
2010年3月 (23)
2010年2月 (23)
文章檔案
(2)
2014年3月 (1)
2011年5月 (1)
XYZ
codeproject.com
lua
ode
蝸牛選股
程序員
華佗中醫大師
積分與排名
積分 - 778328
排名 - 19
最新隨筆
1.?QML 單張圖片顯示翻轉效果
2.?QML 圖片翻轉動畫
3.?ffmpeg av_seek_frame
4.?QML StackLayout
5.?QML Canvas旋轉和平移
6.?QML透明度動畫
7.?QML不響應下層右鍵菜單
8.?QML 右鍵菜單
9.?QML 菜單項
10.?QML 環形進度條
最新評論
1.?re: QT學習筆記-35:QTableWidget動態增加行的方法
寫的真好
--垃圾袋
2.?re: Qt筆記:106 - QT 一個簡單的數據庫查詢軟件
簡單的數據庫查詢軟件 Mark
--linda
3.?re: BGE GUI升級
小弟也準備開發gui庫,可以苦于沒有例子,希望給封源碼學習學習。
better@geekzhou.uu.me
--zhouxiang
4.?re: 發布一個基于OPENGL的GUI庫
better@geekzhou.uu.me
求一份代碼,也再做同樣事,不過到現在都沒思議,主要沒學過opengl。csdn要積分,沒積分。
--zhouxiang
5.?re: Qt筆記:100 - QTableWidget列排序
QT的原理 MARK下
--linda
閱讀排行榜
1.?c++小問題has no member named ''XXX‘(25211)
2.?c++軟件開發第三方庫大全(19596)
3.?QT學習筆記-29.使用QT HTTP下載網絡文件(13032)
4.?gcc之declaration does not declare anything解決方案(11973)
5.?QT學習筆記-35:QTableWidget動態增加行的方法(11831)
評論排行榜
1.?蓋莫游戲引擎-插件系統(17)
2.?loki技法(1).靜態斷言(13)
3.?loki技法(2).CheckReturn(12)
4.?vc6使用rapidxml(12)
5.?c++軟件開發第三方庫大全(12)
c++中使用成員函數作為函數參數的方法
今天由于要寫一些東西,遇到了需要把成員函數作為函數參數的問題
總結有以下幾個辦法:
1.使用類的靜態成員:
最簡單的.只是這種辦法與使用普通函數沒有什么區別
2.模板的方法
1
template
<
class
T
>
2
void
Call(T
*
ptr,
void
(T::
*
MenFn)())
3
{
4
(ptr
->*
MenFn)();
5
}
1
class
MyClass
2
{
3
public
:
4
void
Call()
5
{
6
7
}
8
};
9
10
MyClass cs;
11
Call(
&
cs,
&
MyCall::Call);
3. 虛擬繼承的方法
1
class
Base
2
{
3
public
:
4
virtual
void
Call()
=
0
;
5
};
6
7
class
SubClass :
public
Base
8
{
9
public
:
10
void
Call(){
}
11
};
12
13
void
Call(Base
*
ptr)
14
{
15
ptr
->
Call();
16
}
4.use boost.
1
#include
<
boost
/
bind.hpp
>
2
#include
<
iostream
>
3
using
namespace
std;
4
struct
MyClass
5
{
6
void
Print(
const
char
*
str)
7
{
8
cout
<<
"
holle
"
<<
str
<<
endl;
9
}
10
}
;
11
12
template
<
class
_Fun
>
13
void
CallBackFun(_Fun a,
const
char
*
str)
14
{
15
t(n);
16
}
17
18
int
main()
19
{
20
MyClass mc;
21
CallBackFun(boost::bind(boost::mem_fn(
&
MyClass::Print),
&
mc,_1),
"
world
"
)
22
return
1
;
23
}
24
5.使用靜態成員函數或者聯合體模擬之
1
union
2
{
3
void
(G_CALL ParticleSystem::
*
PhysicsThreadFun)(
void
*
arg);
4
ThreadFun f;
5
}fn;
6
fn.PhysicsThreadFun
=
&
ParticleSystem::PhysicsThreadFun;
7
thread_id
=
CreateThread(fn.f,
&
ps);
6.也許.
對loki庫不太熟悉也許上面也有答案吧
posted on 2010-02-23 19:08
ccsdu2009
閱讀(6462)
評論(6)
編輯
收藏
引用
Comments
#
re: c++中使用成員函數作為函數參數的方法
sanit
Posted @ 2010-02-23 22:38
第二種方法11行,Call(&cs,&MyCall::Call);
應該是&MyClass::Call吧?
回復
更多評論
#
re: c++中使用成員函數作為函數參數的方法
ccsdu2009
Posted @ 2010-02-24 08:27
@sanit
沒問題的
回復
更多評論
#
re: c++中使用成員函數作為函數參數的方法
XYFOR1234
Posted @ 2010-02-24 10:30
函數指針不行嗎?是不是因為THIS指針的關系有一個偏移量?這也好解決,不過是編譯器相關的。
回復
更多評論
#
re: c++中使用成員函數作為函數參數的方法
zuhd
Posted @ 2010-02-24 13:23
void Call(Base *ptr)
{
ptr->Call();
}
直接這樣傳函數指針不就可以了嗎?為什么要求是虛擬繼承啊,普通的函數指針不行嗎?
回復
更多評論
#
re: c++中使用成員函數作為函數參數的方法
永遠在一起
Posted @ 2010-12-15 22:14
謝謝,學習了,不過最后一種不怎么明白
回復
更多評論
#
re: c++中使用成員函數作為函數參數的方法
porphyah
Posted @ 2014-10-25 00:14
如果Lambda表達式能與函數指針相互轉化,那就能像C#一樣輕輕松松寫個臨時的匿名函數了
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © ccsdu2009
国产精品亚洲综合专区片高清久久久
|
亚洲国产精品综合久久网络
|
色综合久久无码五十路人妻
|
亚洲精品乱码久久久久久蜜桃图片
|
久久99精品久久久久久9蜜桃
|
欧美精品丝袜久久久中文字幕
|
欧美丰满熟妇BBB久久久
|
一级做a爰片久久毛片16
|
中文字幕亚洲综合久久菠萝蜜
|
久久精品99久久香蕉国产色戒
|
午夜精品久久久久久久无码
|
国产人久久人人人人爽
|
亚洲国产精品无码久久久久久曰
|
国产精品美女久久久久网
|
人人妻久久人人澡人人爽人人精品
|
欧美熟妇另类久久久久久不卡
|
久久五月精品中文字幕
|
久久99久久99精品免视看动漫
|
亚洲精品国产第一综合99久久
|
色综合久久精品中文字幕首页
|
一本色道久久99一综合
|
亚洲婷婷国产精品电影人久久
|
久久综合九色综合97_久久久
|
亚洲国产精品无码久久久秋霞2
|
国产精品欧美久久久久无广告
|
国产精品久久久久影院色
|
97精品国产97久久久久久免费
|
久久香蕉国产线看观看猫咪?v
|
情人伊人久久综合亚洲
|
久久国产一区二区
|
久久精品国产一区二区三区日韩
|
久久久久久久久久久久中文字幕
|
国产偷久久久精品专区
|
思思久久99热免费精品6
|
亚洲国产日韩欧美综合久久
|
欧美激情精品久久久久久久
|
色婷婷噜噜久久国产精品12p
|
亚洲综合久久夜AV
|
久久午夜福利无码1000合集
|
伊人久久久AV老熟妇色
|
狠狠综合久久综合88亚洲
|