c++ - 在 C++ 中使用 Friend 函数时如何纠正私有错误?
问题描述
在 C++ 中使用友元函数时出现此错误:错误:'int complex::a' 在此上下文中是私有的。我将如何纠正这个错误?我创建了一个复杂的类,在学习友元函数的同时,我知道友元函数也可以访问私有成员函数。但是在这段代码中,会弹出这个错误。提前致谢。
#include <iostream>
using namespace std;
class complex{
private:
int a, b;
public:
void setNumber(int x,int y){a=x;b=y;}
void getNumber(){cout << "\n a="<< a << "b=" << b; }
friend ostream& operator <<(ostream&, complex);
friend istream& operator >>(istream&, complex&);
};
ostream& operator <<(ostream &dout, complex c){
cout << "a=" << c.a;
cout << "b=" << c.b;
return (dout);
}
istream& operator <<(istream &din, complex &c){
cin>>c.a>>c.b;
return (din);
}
int main(){
complex c1;
cin >> c1;
cout << c1;
return 0;
}
解决方案
改变这个
ostream& operator <<(ostream &dout, complex c)
{
cout << "a=" << c.a;
cout << "b=" << c.b;
return (dout);
}
istream& operator <<(istream &din, complex &c)
{
cin>>c.a>>c.b;
return (din);
}
到
ostream& operator <<(ostream &dout, const complex& c)
{
dout << "a=" << c.a;
dout << "b=" << c.b;
return (dout);
}
istream& operator >>(istream &din, complex &c)
{
din>>c.a>>c.b;
return (din);
}
推荐阅读
- mysql - 对 CSV 列求和并将 CSV 结果保存在 MySQL 的 varchar 列中
- angular - 带布尔值的角度复选框
- java - Micronaut,如何将更新发送到 websocket 端点?(爪哇)
- angular - .NET Core 3.1 和 Angular 6 SignalR 设置连接但不接收消息
- pandas - 如何比较熊猫中的一对单词?
- r - 有没有办法在迷你图中定义 X,以便工具提示描述两个轴?
- c# - Admobs 测试激励广告在使用 Unity 制作的 Android 版本中仅加载两次
- c# - 传递一个 Binding 和一个常量字符串作为参数
- docker - 扩展 docker 镜像
- python - 有没有办法在使用 itemgetter 或 lambda 在 python 中排序时从字符串转换为整数?