重载<<和>>友元函数怎么写啊

直流流流流流流流 2019-06-06 07:44:35
头文件CPoint.h里写了两个友元函数
#pragma once

class CPoint {
private:
int x, y;
static int nCount;//用于保存点的个数
public:
CPoint();
CPoint(int px, int py);//构造函数
CPoint(CPoint& p);//拷贝
~CPoint();
int GetX();
int GetY();
void SetX(int nx);
void SetY(int ny);
void SHowPoint();
CPoint operator+(CPoint p);
CPoint operator-(CPoint p);
friend istream& operator>>(istream& is, CPoint& p);
friend istream& operator<<(istream& is, CPoint& p);
};
实现我写在了main函数上面,以及调用
#include <iostream>
#include "CLine.h"
#include "CPoint.h"
using namespace std;

istream& operator>>(istream& is, CPoint& p) { //成员函数重载》
int a, b;
is >> a >> b;
p.SetX(a);
p.SetY(b);
return is;
}

ostream& operator<<(ostream& os, CPoint& p) { //成员函数重载《
os << "<" << p.GetX() << "," << p.GetY() << ">";
return os;
}
int main() {
CPoint overloadCP;
cout << "Enter two numbers to make a point: " << endl;
cin >> overloadCP;
cout << overloadCP;
报错:
错误 C2433“istream”: 不允许在数据声明中使用“friend”
错误 C2238 意外的标记位于“;”之前
错误 C4430 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
错误 C2143 语法错误: 缺少“;”(在“&”的前面)
这个该怎么改啊
...全文
21 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Italink 2019-06-06
  • 打赏
  • 举报
回复
这个代码是可以直接运行的,你确保其他地方没问题吗?

#include <iostream>
using namespace std;
class CPoint {
private:
	int x, y;
	static int nCount;//用于保存点的个数
public:
	CPoint() {}
	int GetX() { return x; };
	int GetY() { return y; }
	void SetX(int nx) { x = nx; };
	void SetY(int ny) { y = ny; };
	friend istream& operator>>(istream& is, CPoint& p);
	friend ostream& operator<<(ostream& is, CPoint& p);
};


istream& operator>>(istream& is, CPoint& p) { //成员函数重载》
	int a, b;
	is >> a >> b;
	p.SetX(a);
	p.SetY(b);
	return is;
}

ostream& operator<<(ostream& os, CPoint& p) { //成员函数重载《
	os << "<" << p.GetX() << "," << p.GetY() << ">";
	return os;
}
int main() {
	CPoint overloadCP;
	cout << "Enter two numbers to make a point: " << endl;
	cin >> overloadCP;
	cout << overloadCP;
	return 0;
}
Italink 2019-06-06
  • 打赏
  • 举报
回复
类内声明友元函数operator<<的地方 ,把istream改为ostream

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧