beyondlyf 发表于 2008-5-13 23:50

关于成员函数指针的一个问题

#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”,函数名不就是代表其起始地址的吗?

beyondlyf 发表于 2008-5-13 23:58

补充一下它给的出错信息:
error C3867: “Point::GetX”: 函数调用缺少参数列表;请使用“&Point::GetX”创建指向成员的指针

flyue 发表于 2008-5-14 18:28

但是这个p_GetX函数是在Piont类里的成员函数啊,所以用Point::GetX、&Point::GetX、*Point::GetX才是对的,“Point::”和“GetX”是一起的,中间不能加东东

sunkaidong 发表于 2008-5-14 18:32

vc6.0没有错误...

beyondlyf 发表于 2008-5-14 22:08

三楼:int (Point::*p_GetX)()是Point类的函数指针

lixuanalex 发表于 2008-5-14 22:52

三楼:不能用*Point::GetX指针名赋值。

页: [1]

编程论坛