关于成员函数指针的一个问题
#include <iostream>using namespace std;
class Point
{public:
Point(int xx=0,int yy=0){X=xx;Y=yy;}
int GetX(){return X;}
int GetY(){return Y;}
private:
int X,Y;};
int main()
{Point A(4,5);
Point *p=&A;
[bo]int (Point::*p_GetX)()=Point::GetX;[/bo]
cout<<A.GetX()<<endl;
cout<<p->GetX()<<endl;
cout<<(A.*p_GetX)()<<endl;}
我用VC++2005编译时粗体字一行出错,我不明白为什么要改成“&Point::GetX”,函数名不就是代表其起始地址的吗?
error C3867: “Point::GetX”: 函数调用缺少参数列表;请使用“&Point::GetX”创建指向成员的指针 但是这个p_GetX函数是在Piont类里的成员函数啊,所以用Point::GetX、&Point::GetX、*Point::GetX才是对的,“Point::”和“GetX”是一起的,中间不能加东东 vc6.0没有错误... 三楼:int (Point::*p_GetX)()是Point类的函数指针 三楼:不能用*Point::GetX指针名赋值。
页:
[1]
