[問題] Pointer to member 用途
看板C_and_CPP (C/C++)作者ayumiQmazaky (拜託刪我 爛人)時間14年前 (2011/12/13 22:19)推噓3(3推 0噓 18→)留言21則, 7人參與討論串1/3 (看更多)
最近再想pointer to member 到底use case是什麼
我完全想不到
我看了一些範例
http://tw.myblog.yahoo.com/briclin09/article?mid=83
如上面連結
雖然看得好像懂
但是仔細想想
1. 我明明有他instance了我幹嘛故意寫這種語法繞一圈 去invoke他的member funcion.
2. 我看到的範例都是在main function宣告一個object 然後去刻意用pointer to
member 去呼叫他的function 無法讓我領會這個寫法的奧妙
這網頁有扯到寫一個觀察者 我一直在推敲這種pointer to member的用法
我想寫一個API maintain一個 invoke list 類似C# 的event handler可以+= 一堆
function
如同他網頁的map
1. 如果我要寫這個API 我需要使用者傳入這個class的instance 和 要註冊的function
但矛盾的是 我既然知道這個class的instance了 我幹嘛要用pointer to member去invoke
我直接->呼叫不就好了?
2. 像C#的event 可以註冊 "不同class" 底下的function(只要prototype相同)
我在想C++有沒有辦法 自己寫這種模擬
+= 這operator 就已經讓我不知道怎麼overloading了
但至少我想要寫一個AddFunctionToList 的API可以讓人一直註冊"不同class底下的同型
function"
這有辦法做到嗎?
再思考一下pointer to member的用法會不會變成說
假如我寫個dll 對方寫一隻AP
我跟你說好我們有個class叫做 Foo
我的API開成
typedef int (Foo::*pFun)(void);
AddFunction(Foo* inst, pFunc);
我dll從頭到尾不知道Foo裡面到底有啥
我只宣告class Foo;
然後這API裡面就類似這網頁 maintain一個map並且invoke 這map裡面的 function
如果上面說法成立
可以解釋成
我寫dll 我可以不用知道AP真的把這class Foo裡面定義了多麼花俏
他只要呼叫我這個API我就有辦法invoke到他所有註冊的function.
目前我猜測 這是pointer to member的應用......
但這樣只能處理固定class的function 而無法做到maintain"不同class底下的同型
function" 又可以逐一invoke.
以上 問題有點繁雜且不太好表達
請各位不吝解惑
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.147.15.66
→
12/13 23:03, , 1F
12/13 23:03, 1F
→
12/13 23:12, , 2F
12/13 23:12, 2F
→
12/13 23:23, , 3F
12/13 23:23, 3F
推
12/13 23:43, , 4F
12/13 23:43, 4F
→
12/13 23:43, , 5F
12/13 23:43, 5F
→
12/13 23:43, , 6F
12/13 23:43, 6F
→
12/13 23:44, , 7F
12/13 23:44, 7F
→
12/13 23:45, , 8F
12/13 23:45, 8F
→
12/13 23:46, , 9F
12/13 23:46, 9F
→
12/13 23:47, , 10F
12/13 23:47, 10F
→
12/13 23:47, , 11F
12/13 23:47, 11F
→
12/13 23:48, , 12F
12/13 23:48, 12F
→
12/14 00:15, , 13F
12/14 00:15, 13F
推
12/14 00:16, , 14F
12/14 00:16, 14F
→
12/14 00:22, , 15F
12/14 00:22, 15F
→
12/14 00:27, , 16F
12/14 00:27, 16F
推
12/14 00:28, , 17F
12/14 00:28, 17F
→
12/14 01:36, , 18F
12/14 01:36, 18F
→
12/14 01:37, , 19F
12/14 01:37, 19F
→
12/14 01:37, , 20F
12/14 01:37, 20F
→
12/14 11:40, , 21F
12/14 11:40, 21F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章