如果我们要指定一个指向类内部元素的指针,那我们该怎么操作呢
假设我们定义了一个类:里面有两个变量和两个函数
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;