Bonjour à tous,

Tout comme les pointeurs de fonction, je tente d'utiliser des pointeurs de membres :

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
 
template<class T>
class CGes
{
public:
    typedef typename int* T::*TDataProperty;
    int* GetData(T& tData, TDataProperty prop) { return tData.*prop; }
};
 
class CMaClass
{
public:
   int m_i;
};
 
CMaClass obj;
obj.m_i = 4; // Pour le test
 
CGes<CMaClass>::TDataProperty prop = &CMaClass.m_i;
 
CGes testGes;
int i = testGes.GetData(obj, prop);
Et en fait, lorsque je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
int* i = obj.*prop;
Ca me renvoi une adresse mémoire proche de zéro (0x00000016). J'imagine qu'il faut additionner l'adresse renvoyé par "obj.*prop" à l'adresse de "&obj" ?

Que dois-je modifier dans mon code pour que ça soit correct ?


Merci beaucoup,

A bientôt