标题:这里为什么会报错?
只看楼主
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
结帖率:92%
已结贴  问题点数:10 回复次数:1 
这里为什么会报错?
#include <iostream>
using namespace std;
class MyInt
{
    int nVal;
    public:
    MyInt( int n) { nVal = n ;}
    MyInt & operator - (const int x){
        nVal-=x;
        return *this;
    }
    friend int Inc(MyInt My){//如果不加"friend",下面红色的语句会报错
        return My.nVal+1;
    }
};
int Inc(int n) {
    return n + 1;
}
int main () {
    int n;
    while(cin >>n) {
        MyInt objInt(n);
        objInt-2-1-3;
        cout << Inc(objInt);
        cout <<",";
        objInt-2-1;
        cout << Inc(objInt) << endl;
    }
    return 0;
}
   
求大佬解释一下为什么会这样?
还有我觉得并没有用到友元,有没有其他修改的办法?   
        
搜索更多相关主题的帖子: 报错 Inc int return cout 
2018-10-02 21:15
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:10 
因为 nVal 是私用的, 不对外公开的
而 friend 的作用就是让 nVal 对 friend 函数公开
外界直接访问一个私用的变量是不可以通过编译的
2018-10-02 21:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490130-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.181380 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved