指针转换问题

[复制链接]
 楼主| dfsa 发表于 2012-6-6 19:37 | 显示全部楼层 |阅读模式
struct A
{
   
void f(int j)
    {
        std::cout
<<j<<std::endl;
    }
};
int _tmain(int argc, _TCHAR* argv[])
{
   
int*p=NULL;
   
//(1)p=(int*&)(&A::f); error C2102: '&' requires l-value
   
    typedef
void (A::* PMF)(int);
    PMF p2
=&A::f;
    p
=(int*&)p2;//(2)这样是可以把p2中存储的内存地址强制解析成int*赋值给p的

return
0;
}

目的是想通过一条语句话获得A::f的地址
(2)处进行分步转换没有问题,但是在(1)处用看似和(2)处"相同"的一步转换却无法成功,提示“error C2102: '&' requires l-value”里面的&是指取地址吧A::f不是左值吗?(PMF p2=&A::f;取地址怎么OK呢??)怎么取不到地址呢?

问题1. 帮忙解释下(1)处错误而(2)处正确的原因(我看两者,看上去只是分开写和合在一起写的不同= =!)
问题2. (1)处是否存在一条语句即可完成的转换(p来存储A::f的地址)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

282

主题

2404

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部