Dans le livre intitulé « Utilisation de C++ » par Rob McGregor, il est suivant l'exemple de l'utilisation de l'opérateur pointeur à membreDérivation un type de pointeur sur l'élément de classe non-pointeur
class mycls
{
public:
int member;
int *ptr;
};
void main()
{
mycls MyClass;
// Derive a pointer type to the non-pointer class member
int mycls::*member = &mycls::member;
MyClass.ptr = new int;
mycls* pMyClass = &MyClass;
pMyClass->*member = 5;
*MyClass.ptr = 10;
cout << "pMyClass->*member = " << pMyClass->*member << "\n"; // pMyClass->*member = 5
cout << "MyClass.*member = " << MyClass.*member << "\n"; // MyClass.*member = 5
cout << "*MyClass.ptr = " << *MyClass.ptr << "\n"; // *MyClass.ptr = 10
cout << "*pMyClass->ptr = " << *pMyClass->ptr << "\n"; // *pMyClass->ptr = 10
delete MyClass.ptr;
}
Dans cet exemple, je ne suis pas comprendre pourquoi variable membre mycls::member
devient peut-être un pointeur après (deviner) cette ligne de code:
int mycls::*member = &mycls::member;
Qu'est-ce que cela fait?
Est-ce aussi valable et signifie la même chose, puis « int * ptr = & (ptrToObj-> a); " –
C'est valide, mais ce n'est pas la même chose. Voir ma mise à jour –