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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.