- Η C++ επιτρέπει τον ορισμό δεικτών σε μέλη (μεταβλητές ή συναρτήσεις)
μιας κλάσης.
Στο παρακάτω παράδειγμα η μεταβλητή coordptr ορίζεται ως δείκτης
σε ακέραιες μεταβλητές - μέλη - της κλάσης point.
class point {
public:
int x, y;
};
int point::*coordptr; // Pointer to one of the two point coordinates
Η μεταβλητή coordptr μπορεί να δείχνει στο μέλος x ή στο μέλος y.
- Η μεταβλητή μπορεί να λάβει αρχική τιμή με τη σύνταξη
var = &(class_name::member_name);
Παράδειγμα:
coordptr = &(point::x); // Coordptr points to the x coordinates
- Πρόσβαση στο αντίστοιχο μέλος μπορεί να υπάρξει μόνο με βάση
ένα πραγματικό αντικείμενο ή δείκτη της συγκεκριμένης κλάσης με
τους τελεστές .* και ->* αντίστοιχα.
Αριστερά από τον τελεστή γράφεται το αντικείμενο ή ο δείκτης της
κλάσης και δεξιά ο δείκτης στο μέλος της κλάσης.
- Το παρακάτω παράδειγμα ορίζει δύο μεταβλητές τύπου point και
δίνει αρχικές τιμές στα μέλη τους μέσω της coordptr η οποία αρχικά
δείχνει στα x και μετά στα y.
Έτσι, στο τέλος τυπώνει τις τιμές των σημείων ως (1, 2) και (10, 20).
#include <iostream.h>
class point {
public:
int x, y;
void print() { cout << x << "," << y << "\n"; }
};
main()
{
int point::*coordptr; // Pointer to a point coordinate
point p, p2;
coordptr = &(point::x); // Coordptr points to the x coordinates
p.*coordptr = 1;
p2.*coordptr = 10;
coordptr = &(point::y); // Coordptr now points to the y coordinates
p.*coordptr = 2;
p2.*coordptr = 20;
p.print();
p2.print();
return (0);
}