打印

指针转换问题

[复制链接]
1121|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝