【发布时间】:2019-06-19 06:56:22
【问题描述】:
在这个运算符重载代码中,我不想写“使用命名空间 std”,而是想在需要的地方包含“std::”。
在 cout 和 cin 之后添加“std::”后,我仍然会收到错误,包括“std::”。
#include<iostream>
//using namespace std;
class Complex
{
private:
int real, imag;
public:
Complex(int r = 0, int i = 0) : real(r), imag(i) {}
friend ostream & operator << (ostream &, const Complex &);
friend istream & operator >> (istream &, Complex &);
};
ostream & operator << (ostream &out, Complex &obj)
{
out<<obj.real<<" "<<obj.imag;
return out;
}
istream & operator >> (istream &in, const Complex &obj)
{
in>>obj.real>>obj.imag;
return in;
}
int main()
{
Complex obj;
std::cin>>obj;
std::cout<<obj;
return 0;
}
它应该使用 istream 运算符输入两个数字,并使用 ostream 运算符输出两个数字。
【问题讨论】:
-
您遇到什么错误?
-
ostream和istream来自哪个命名空间?
标签: c++ operator-overloading std