【 在 lufthansa (ANA) 的大作中提到: 】
: 标 题: 请问这bind functional的问题
: 发信站: 水木社区 (Tue May 19 11:35:05 2020), 站内
:
: class father
: {
: public:
: virtual void ff(int j) = 0;
: };
:
: class child: public father
: {
: public:
: virtual void ff(int i)
: {
: printf("in aaaa %d\n", i);
: }
: virtual ~child() {};
: };
:
: using CbStrongPtr = std::shared_ptr<fathter>;
: using Cls = std::function<void(CbStrongPtr)>;
: void fireNotification(Cls cls)
: {
: child m;
: auto ccc = make_shared<child>(m);
: auto aaa = dynamic_pointer_cast<father>(ccc);
: // 类指针当参数就能替代那种bind带对象的用法?
: cls(aaa);
: }
:
: int main()
: {
: // 这个bind怎么没带对象。
: fireNotification(bind(&father::ff, placeholders::_1, 1));
: return 0;
: }
:
:
: 这里的bind绑定成员函数,没传成员实例的地址,在外面就会报错,当函数参数就不会
: cls调用的时候,用子类实例指针当参数,就能调到bind的函数了?然后哪里转成了一般的bind调用?就是这种网上都能看到的用法
: child cc;
: bind(&father::ff, cc, placeholders::_1, 1)
出错第一件事不是看错误信息吗?
你的ff只有一个参数,你这样有两个,当然错了。
: 对于bind的用法,没找到哪个说明了用法是绑定成员函数又不带对象的。网上能找到的都是上面那种带了cc的绑定。不带的这个用法的名称是什么?我好再搜搜。
: 难道是bind带对象的那种就是标准库里用functional做的封装?只是这个拿到外面来了?
: --
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 64.104.125.*]
--
FROM 76.126.252.*