【发布时间】:2023-03-30 02:54:01
【问题描述】:
我有以下课程:
class A {
public:
// ctr and etc ...
A* clone(B* container);
};
现在,我已经填充了 vector<A*> availableObjs。我想在其中的每一个上调用clone,因此并将克隆的对象插入vector<A*> 类型的新容器clonedObjs。我正在尝试关注 - 但它无法编译:
transform(availableObjs.begin(), availableObjs.end(), back_inserter(clonedObjs),
bind1st(mem_fun(&A::clone), container)); // container is of type B*
有没有简单的出路?我有很多像 A 一样的分类 - 所以让它们中的每一个都成为函子是太多的任务。
【问题讨论】:
-
您确定要在容器中添加指针吗?您不得对该算法调用任何修改算法(例如排序)。但是,您可以使用 shared_ptr 的向量,然后再次支持值语义。