J'ai la classe suivante:mem_fun et problème bind1st
class A {
public:
// ctr and etc ...
A* clone(B* container);
};
Maintenant, je me suis un vector<A*> availableObjs
déjà peuplé. Je veux appeler clone
sur chacun d'eux, donc et insérer des objets clonés dans un nouveau conteneur clonedObjs
de type vector<A*>
. J'essaie de suivre - mais il ne compile pas:
transform(availableObjs.begin(), availableObjs.end(), back_inserter(clonedObjs),
bind1st(mem_fun(&A::clone), container)); // container is of type B*
Y a-t-il un moyen de s'en sortir? J'ai beaucoup classifié comme A - donc faire de chacun d'eux un foncteur est trop difficile.
Êtes-vous sûr que vous voulez avoir des pointeurs dans votre réservoir? Vous ne devez pas appeler d'algorithme de modification sur cet algorithme (comme par exemple trier). Cependant, vous pouvez utiliser un vecteur de shared_ptr , puis vous prenez à nouveau en charge la sémantique des valeurs. – fmuecke