Bonjour,

Je ne trouve pas de solution à un problème qui n'en a peut-être pas... Un exemple vaudra mieux qu'une longue explication :

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
struct MaStructure
{
    static double champ_1;
    static double champ_2;
    static double champ_3;
 
};
 
class MaClasse
{
    map<int, MaStructure> conteneur;
 
public :
    vector<double> MaFonction(double MaStructure:: *arg)    
}
 
vector<double> MaClasse::MaFonction(double MaStructure:: *arg)
{
    vector<double> monVector;
 
    for (map<int, MaStructure>::iterator it = conteneur.begin(); it != conteneur.end(); ++it)
         monVector.push_back(it.value().*arg);
 
    return monVector;
}
Et si ce type de manip est possible (?), je sèche sur l'argument à l'appel de cette fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
    MaClasse *classe = new Classe();
    classe->MaFonction(????);  // rien ne fonctionne
Si je ne trouve pas de solution, il faudra que je décline MaFonction autant de fois qu'il y a de membres à MaStructure, en remplaçant chaque fois it.value().*arg par it.value().champ_1, it.value().champ_2, etc..., ce qui ne me semble pas une bonne pratique.

J'avoue que je n'ai rien trouvé dans les forums anglo-saxons qui parle de ça, ni de près, ni de loin...

Bonne fin de journée à tous