Utiliser la fonction transform dans une classe mère et définir l'unary fonction dans une classe fille
Bonjour à tous,
Voici mon premier message sur developpez.net. Mon problème est simple, j'ai une classe mère qui possède un vector en champ protégé et je souhaite définir une méthode qui utilise la fonction transform de la STL. Le code de cette méthode est quasiment le même pour toutes mes classes filles, la seule chose qui change est la fonction que prend transform en parametre. J'aimerai donc pouvoir définir cette fonction dans mes classes filles. C'est ici que ça bloque et malgré différents essais ça ne marche pas. Je vous présente deux petits exemples pour illustrer mon propos où dans les deux ça ne marche pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
#include <vector>
#include <algorithm>
using namespace std;
struct mere {
mere(int n) : value(n) {}
virtual int modif(int ) =0;
void prix() {
transform(value.begin(), value.end(), value.begin(), modif);
}
protected :
vector<int> value;
};
struct fille : public mere {
fille(int n, int K) : mere(n), K(K) {}
int modif(int x) { return K*x;}
private :
int K;
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#include <vector>
#include <algorithm>
using namespace std;
struct mere {
mere(int n) : value(n), modif() {}
void prix() {
transform(value.begin(), value.end(), value.begin(), modif);
}
protected :
vector<int> value;
struct modif_value {
virtual int operator()(int );
} modif;
};
struct fille : public mere {
fille(int n, int K) : mere(n), K(K) , mK() {}
private :
int K;
struct modifK : public modif_value {
int operator()(int x) {return K*x;}
} mK;
}; |
Quelqu'un aurait t'il une solution? Par avance merci.