Fonction transform dans classe mère avec def dans classe fille
Vlntn
Messages postés
1
Statut
Membre
-
BOB-XM2 Messages postés 189 Statut Membre -
BOB-XM2 Messages postés 189 Statut Membre -
Bonjour à tous,
Voici mon premier message sur commentcamarche. 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 :
Quelqu'un aurait t'il une solution? Par avance merci.
Voici mon premier message sur commentcamarche. 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 :
#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;
};
#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.
A voir également:
- Fonction transform dans classe mère avec def dans classe fille
- Pile carte mere - Guide
- Fonction si et - Guide
- Classe ram - Guide
- La fille de ma mère telegram - Forum Cinéma / Télé
- Bluetooth mercedes classe a 2005 - Forum Autoradio
1 réponse
c'est normal que ca marche pas... la solution la mieux adaptée est l'utilisation de fonctions amies (déclarées friend void my_fonction(int x, float f ....) ) ceci dit que la fonction, ainsi déclarée dans le header de la struct mère et définie n'importe où, peut accéder a toutes les ressources de mere)
ca marchera à 100% ;)
ca marchera à 100% ;)