PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] std::bind传入引数 (已解决)
楼主:
ilikekotomi
(Young)
2016-11-25 10:33:29
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
VC++
问题(Question):
最近在看Effective Modern C++中文版
条款34写到尽量用lambda取代bind
作者举了一个例子我截取片段如下
https://codepaste.net/17veuz
1-8行是function的宣告
15行的setSoundL是使用lambda
29行是使用bind会得到的错误范例
错误原因是now()+1h会在bind时就当作引数传入
而不是呼叫bind时才计算
39行是作者修改过的范例
将now()+1h再用bind包装一次
我的疑问是为何这样不会在bind的时候就把now传进去?
试着写一个简单的code来重现
http://ideone.com/tSyvtn
原本会预计test2在经过23行就能得到5576
但test2输出结果还是一样为10
表示test2在bind的时候就已经把值传入了
并没有达到书上讲的效果
所以想问问看怎样可以让23行的set发生作用?
使得25行的test2()得到5576
作者:
PkmX
(阿猫)
2016-11-25 18:25:00
m.GetX() 改成 std::bind(&Manager::GetX, &m)
楼主:
ilikekotomi
(Young)
2016-11-25 18:59:00
感谢这样确实就可以了 不过我还是很好奇书上的例子为什么可以这样就拿到正确的值
作者:
PkmX
(阿猫)
2016-11-26 02:00:00
那个范例真的是对的吗= =?
http://ideone.com/oCueTf
楼主:
ilikekotomi
(Young)
2016-11-26 07:59:00
我也是很纳闷 看起来怪怪的所以才想来问问看
作者:
Caesar08
(Caesar)
2016-11-26 12:08:00
作者写错了,应该是要呼叫function才对
http://www.aristeia.com/BookErrata/emc++-errata.html
看234-236的部分,跟下一个的235,就可以解答你的问题
楼主:
ilikekotomi
(Young)
2016-11-26 13:40:00
感谢凯萨 这样比较有道理一些
继续阅读
[问题] 如何辨识出Line对话纪录的日期戳记
deo2000
[问题] 函数原型宣告造成内存问题
yshihyu
[问题] 关于程式码还原
z2001boys
[问题] 关于副程式呼叫
usanhuang
[问题] opencv阵列取值
laladeer
[问题] QT新增设计师表单类别
allssddaa
[问题] 请问仪表板功能要怎样做会比较好呢?
MOONY135
[问题] constexpr 的实作
wtchen
[问题] MFC分页如何控制元件
williamsm
Re: [问题] 关于微控制器中的指标写法
pttworld
Links
booklink
Contact Us: admin [ a t ] ucptt.com