我有以下课程:
class A {
public:
// ctr and etc ...
A* clone(B* container);
};
现在,我有一个vector<A*> availableObjs
已经有人居住了。我想打电话clone
在其中每一个上,将克隆的对象插入到新容器中clonedObjs
类型的vector<A*>
。我正在尝试以下操作 - 但它无法编译:
transform(availableObjs.begin(), availableObjs.end(), back_inserter(clonedObjs),
bind1st(mem_fun(&A::clone), container)); // container is of type B*
有简单的出路吗?我有很多像 A 类的东西 - 所以让每一个都成为函子是一项艰巨的任务。
你需要使用bind2nd
代替bind1st
:
transform(availableObjs.begin(), availableObjs.end(), back_inserter(clonedObjs),
bind2nd(mem_fun(&A::clone), container)); // container is of type B*
创建的函子mem_fun(&A::clone)
期望一个A*
作为它的第一个参数。这是通常隐式指定的实例,在该实例上调用该方法。第一个“真实”参数A::clone
是第二个参数mem_fun(&A::clone)
因此需要与bind2nd
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)