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

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 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突