VC++编译通过,GCC3出错

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:33:32
//P200 7.20
#include <iostream>
using namespace std;
class P
{
public:
P(int x=0,int y=0)
{
X=x;
Y=y;
}
int GetX()
{return X;}
int GetY()
{return Y;}
private:
int X,Y;
};
int main()
{
P u(6,8); //定义对象
P *pu=&u; //定义对像指针并赋初值
int(P::*p_Get)()=P::GetX; //定义函数成员指针并赋初值
cout < <(u.*p_Get)() < <endl; //函数成员指针访问函数成员GetX()
cout < <(pu-> GetX)() < <endl; //对象指针访问函数成员GetX()
cout &l

这里必须要求P::GetX()是静态的函数。

可以想一下如果不是静态的,声明了多个对象后,那么你的int(P::*p_Get)()函数被调用后,得到的是哪个对象的成员变量?

vc编译器确实有漏洞,不得不承认。