a昊a 2021-01-09 16:36 采纳率: 66.7%
浏览 548
已采纳

C++友元函数不能访问私有变量问题

刚刚学习c++的友元函数以及运算符的重载,按照c++primerplus写了complex复数类,通过友元函数重载了<<运算符没问题,但是

我自己在写Array类时重载<<却报错了,友元函数不能访问类的私有数据了。不知道为啥,求大佬指教,萌新虚心学习

下面是图片

先是complex类的

没有问题,也能运行

下面是我的Array类,

下面是报错信息

就不能访问私有变量length和指针p

求da'lao'zhi'jiao

  • 写回答

1条回答 默认 最新

  • 幻灰龙 2021-01-14 10:23
    关注

    这是因为你加了名称空间,相当于加了作用域。Array成员函数的实现,以及友元函数的实现,同样需要放在Array类所在的名称空间内。

    把rnyarray.cpp里的实现代码放在名称空间内即可:
     

    namespace ARRAY{
    
     ...
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败