C++/Wskaźniki do elementów składowych

Z Wikibooks, biblioteki wolnych podręczników.
< C++

W C++ możesz używać wskaźników, aby uzyskać dostęp do członków klasy. Aby użyć wskaźników do członków klasy, musisz użyć operatora wskaźnika do elementu członkowskiego ->* lub operatora wskaźnika do elementu członkowskiego obiektu .*.

Oto przykład:

#include <iostream>
using namespace std;

class MyClass {
public:
  int myInt;
  void myFunction() {
    cout << "Hello from myFunction!" << endl;
  }
};

int main() {
  MyClass obj;
  obj.myInt = 42;
  void (MyClass::*funcPtr)() = &MyClass::myFunction;
  int MyClass::*intPtr = &MyClass::myInt;
  
  // Accessing a member function using a pointer
  (obj.*funcPtr)();
  
  // Accessing a data member using a pointer
  cout << obj.*intPtr << endl;
  
  return 0;
}

W tym przykładzie definiujemy klasę MyClass ze składową danych myInt i funkcją składową myFunction. Następnie tworzymy instancję klasy o nazwie obj. Definiujemy również funkcję wskaźnika do elementu członkowskiego o nazwie funcPtr, która wskazuje na funkcję elementu członkowskiego myFunction, oraz wskaźnik do danych elementu członkowskiego o nazwie intPtr, który wskazuje element członkowski danych myInt.

Aby uzyskać dostęp do funkcji składowej za pomocą funkcji wskaźnika do składowej, używamy operatora .* z instancją klasy (obj) i funkcji wskaźnika do składowej (funcPtr), ujętych w nawiasy.

Aby uzyskać dostęp do składowej danych za pomocą wskaźnika do danych składowych, używamy operatora .* z instancją klasy (obj) i wskaźnika do danych składowych (intPtr), a następnie używamy instrukcji cout do wyprowadź wartość.

Należy pamiętać, że wskaźniki do członków klasy są zwykle używane w zaawansowanych scenariuszach programowania i należy ich używać ostrożnie, aby uniknąć niezamierzonego zachowania.