gpt4 book ai didi

c++ - mem_fun 和 bind1st 问题

转载 作者:太空狗 更新时间:2023-10-29 23:29:25 25 4
gpt4 key购买 nike

我正在上课:

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 绑定(bind).

关于c++ - mem_fun 和 bind1st 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1762781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com