クラスメンバーポインタおよびメンバー関数ポインタ


クラス内の要素を指すポインタを指定する場合は、どうすればいいでしょうか.
クラスを定義したとします.2つの変数と2つの関数が含まれています.
struct Vector
{
public:
	int x;
	int y;

public:
	Vector(int tX, int tY) :x{ tX }, y{ tY } {}

	int getX() const {
		return x;
	}

	int getY() const {
		return y;
	}

関数と要素を指すポインタを定義するとします.このように定義できます.
int Vector::*px = &Vector::x;  //         
int Vector::*py = &Vector::y; 

呼び出し方法は.*呼び出すことで対応する変数を呼び出すことができます
Vector v{ 1,2 };

cout << v.*px << endl;
cout << v.*py << endl;

関数ポインタを定義すると、このフォーマットで定義できます.
戻り値(クラス名:*ポインタ名)(パラメータ)const
int ReadFucPointer(Vector v, int (Vector::*p)() const) {
	return (v.*p)();  //       ,       
}

ここで、v.*p()と書くと、優先度の問題でカッコが無視されるため、カッコを付ける必要があります.
呼び出し方法は次のとおりです.
	cout << ReadFucPointer(v, &Vector::getX) << endl;
	cout << ReadFucPointer(v, &Vector::getY) << endl;