я следующий класс:mem_fun и bind1st проблема
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 - так что каждый из этих функторов - слишком большая задача.
Вы уверены, что хотите иметь указатели в контейнере? Вы не должны вызывать алгоритм изменения этого алгоритма (например, сортировку). Однако вы можете использовать вектор shared_ptr , затем снова поддерживаете семантику значений. – fmuecke