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条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办