PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] functor to function pointer
作者:
ialk
(沒有靈感..)
2015-04-29 12:06:09
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
MSVC++ 10.0
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
std
問題(Question):
runtime error
餵入的資料(Input):
預期的正確結果(Expected Output):
print
1
2
3
錯誤結果(Wrong Output):
access violation
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/1FKquB
補充說明(Supplement):
如程式碼,會死在18行
fp g3 = *g1.target<fp>();
請問應該要怎麼寫才是正確的
作者:
PkmX
(阿貓)
2015-04-29 12:17:00
基本上沒辦法把std::bind回傳的東西轉成func. pointer頂多就 g1.target<decltype(std::bind(f, _1))>() 吧好奇你幹麻不就直接用g1 = f建構就好
作者: ialk (沒有靈感..)
2015-04-29 12:24:00
其實我想做的事是bind一個member function然後傳給一個function pointer
作者:
PkmX
(阿貓)
2015-04-29 13:02:00
基本上function pointer是沒有state的當然如果你可以多傳一個this的話可以參考:
http://ideone.com/q5k9gX
作者:
suhorng
( )
2015-04-29 15:28:00
bind 出來應該會是某種 anonymous type?就像每個 lambda 的 type 都不一樣我覺得可以直接傳 std::function 的話是最簡單的辦法
作者: ialk (沒有靈感..)
2015-04-29 15:35:00
因為我要call的API是function pointer所以想從std::function bind一個member function傳過去
作者:
littleshan
(我要加入劍道社!)
2015-04-29 17:29:00
如果你使用一個設計良好的API,在傳入callback時應該還可以傳入一個void*作為額外參數而API會把這個void*當參數去呼叫你的function pointer這麼一來你就可以傳遞this pointer了只是,並非所有的API設計者都有這種sense :(
作者: ialk (沒有靈感..)
2015-04-29 17:44:00
可惜沒有多一個參數 我也無法去修改那個API :(
作者:
Feis
(永遠睡不著 @@)
2015-04-29 18:01:00
另一種可能就是用 template 生 wrapper 去被指
繼續閱讀
[問題] 用遞迴求平均值
a80885057
Re: [問題] glibc 2.7 strlen.c
johnjohnlin
[問題] glibc 2.7 strlen.c
OPIV
[問題] C++11的code 能否跟舊標準混用
Sirctal
[問題] 找出設備裡的long address
wayne78117
[問題] 請較VCL中USEFORM巨集的用意
z1976
[問題] 圖片疊合
chigi
[問題] C++全方位學習這本書
akka5678
[問題] 字串結尾加上Ctrl + Z
f814030
[問題] 請問列舉型態的問題
elohacp4
Links
booklink
Contact Us: admin [ a t ] ucptt.com