中易网

Vs2013编程友元函数无法访问类私有成员问题

答案:2  悬赏:70  
解决时间 2021-03-24 19:44
今天学了重载运算符,然后我编写了如下代码:
#include
using namespace std;
class Complex
{
public:
Complex(double i = 0.0, double j = 0.0) :real(i), imag(j){}
friend Complex operator+ (const Complex &c1, const Complex &c2);
friend Complex operator- (const Complex &c1, const Complex &c2);
friend ostream & operator<< (ostream &cout, const Complex &c);
private:
double real;
double imag;
};

Complex operator+ (const Complex &c1, const Complex &c2)
{
return Complex(c1.real + c2.real, c1.imag + c2.imag);
}
Complex operator- (const Complex &c1, const Complex &c2)
{
return Complex(c1.real - c2.real, c1.imag - c2.imag);
}
ostream & operator<< (ostream &cout, Complex &c)
{
cout << c.real << "," << c.imag;
return cout;
}

int main()
{
Complex c1(5, 4), c2(2, 10), c3;
cout << "c1 = " << c1 << endl;
cout << "c2 = " << c2 << endl;
cout << "c3 = " << c3 << endl;
c3 = c1 + c2;
cout << "c3 = " << c3 << endl;
return 0;
}
然后调试一直通不过,说是不能访问私有成员,但是那不是友元函数么?怎么就不能了!!!
求大神解答……



最佳答案
函数头:
ostream & operator<< (ostream &cout, Complex &c)
应该改成:
ostream & operator<< (ostream &cout, const Complex &c)
全部回答
定义与实现参数类型不一致。 实现里const string st2应该是const string& st2
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
给车全车喷漆得多少钱啊,小车
不知怎么回事我厂里有个女孩子总说我爱装斯文
甲车每小吋70千米,乙车60千米,在距终点20千米
二手车评估报告怎么写?
怎样将排骨汤炖的肉好吃汤也好喝?
竹根滩高中高三11月月考成绩2016
马齿笕能与藏红花同食吗
2017年雷州市纪家镇一中七(八)班是什么班啊
有用过办护照的翼拍照吗
公司出资的原则
兰花里面可以放坏的水果吗?
请教关于卫生间浴室装修问题,卫生间与浴室一
请问下温州到苍南在哪里坐车?
深圳到中山古镇自驾车怎么走?急~~~
胃不好的人可以喝醋吗
推荐资讯
oppor9s价格多少
里约和北京的时差
迷茫 修电脑主板最基本要有哪些基础知识??
吃黑米饭能减肥吗?
DY505A与DY550B区别在哪里
剖宫产后全身痒后背爱出汗有什么办法缓解
中建的机构设置及分局效益
反映家乡人的风貌的记叙文作文
导数为1/(4+x^2)的原函数是什么
延期毕业。。大四的时候要处理户籍和档案吗?
2015深圳北大青鸟 学电子商务学费多少?几年
家里一些旧衣服怎样处理?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?