雪傲天1 2023-05-06 11:18 采纳率: 96.2%
浏览 10
已结题

这段代码为什么错了呢

这代码为什么不能运行呢,错在了哪里


#include<iostream>
class A
{
public:
    int x;
    int y;
};
class B:public A
{
protected:
    int z;
public:
    int get_z()
    {
        return z;
    }
};
class C :public B
{
public:
    int h;
};
int main()
{
    B b;
    int* ptrz = &(b.get_z());
}
VS显示最后一行出错了,我只是想取出b的成员z的内存地址,为什么错了呢
  • 写回答

3条回答 默认 最新

  • m0_58127999 2023-05-06 11:55
    关注

    你的代码中,最后一行出错了,因为get_z()函数返回的是一个临时变量,而不是一个可以取地址的变量。如果您想要获取z的地址,可以将B类中的get_z()函数改为以下代码:

    int& get_z()
    {
        return z;
    }
    
    

    这样就可以通过以下代码来获取z的地址:

    B b;
    int* ptrz = &(b.get_z());
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月14日
  • 已采纳回答 5月6日
  • 创建了问题 5月6日