qq_45735316 2020-04-03 20:33 采纳率: 94.1%
浏览 138
已采纳

为什么总是访问不了X的私有数据成员?哪里出错了?

图片说明
main.cpp

#include <iostream>
#include "Classfile.h"
using namespace std; 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//C++ P186 5-13

int main(int argc, char** argv) {
    X x(5);
    Y y;
    Z z;
    y.g(x);
    z.f(x);
    h(x);
    return 0;
}

Classfile.h


class X{
    public:
        friend void g(X x);
        friend class Z;
        friend void h(X x);
        X(int i=0):i(i){}
    private:
        int i;
};
class Y{
    public:
        void g(X x);
    private:
};

class Z{
    public:
         void f(X x);
    private:
        X x; 
};

Classfile.cpp

#include <iostream>
#include "Classfile.h"
using namespace std;
void Y::g(X x)
{
    x.i=x.i+1;
    cout<<"i="<<x.i<<endl;
 } 
void Z::f(X x)
{
    x.i=x.i+5;
    cout<<"i="<<x.i<<endl;
}
void h(X x)
{
    x.i=x.i+10;
    cout<<"i="<<x.i<<endl;
}
  • 写回答

2条回答 默认 最新

  • 小学狗喵喵叫 2020-04-04 00:38
    关注
    friend void g(X x); 改为 friend class Y;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来