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