qq_45735316
2020-04-03 10:19
采纳率: 85.7%
浏览 575

已经声明了友元函数为什么还是不能访问x的私有数据?还有这个头文件的引用方式是对的吗?

图片说明

#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;
    Y y;
    Z z;
    x(5);
    y.g(x);
    z.f(x);
    return 0;
}

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:
};
void Y::g(X x){
    x.i=x.i+1;
    cout<<"i="<<x.i<endl;
}
class Z{
    public:
         void f(X x);
    private:
        X x; 
};
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;   
}
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题