刘家奕_ 2022-03-17 17:28 采纳率: 65.2%
浏览 19
已结题

friend友元函数不是可以访问私有成员吗?我这里为什么提示x没有被定义



```c++
#include <iostream>
using namespace std;
 class Myclass 
{public:
  Myclass (int a,int b) { x=a;y=b;}
  friend void copy(Myclass & my);
  void print( )
  { cout<<"x="<<x<<endl;
    cout<<"y="<<y<<endl;
  } 
private:
int x,y;
};
void copy(Myclass & my)
{
    x=my.x;
    y=my.y;
}
int main()
{
    Myclass m1(1,2);
    Myclass m2(3,4);
    m1.print();
    m2.print();
    copy(m1);
    m2.print();
    return 0;
}

```

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-03-17 17:40
    关注
    
    #include <iostream>
    
    using namespace std;
    
    class Myclass
    {
    public:
        Myclass(int a, int b)
        {
            x = a;
            y = b;
        }
    
        void print() const
        {
            cout << "x=" << x << endl;
            cout << "y=" << y << endl;
        }
    
    private:
        int x, y;
    
        friend void copy(Myclass &m1, const Myclass &m2);
    };
    
    void copy(Myclass &m1, const Myclass &m2)
    {
        m1.x = m2.x;
        m1.y = m2.y;
    }
    
    int main()
    {
        Myclass m1(1, 2);
        Myclass m2(3, 4);
        m1.print();
        m2.print();
        copy(m2, m1);
        m2.print();
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月31日
  • 已采纳回答 7月23日
  • 创建了问题 3月17日

悬赏问题

  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口