运算符重载问题?
Operator overloading problems?
我在这段包含运算符重载问题的代码中有七个错误,我尝试对 >> 和 << 进行运算符重载,但它不起作用
#include<iostream>
using namespace std;
class complex
{
private:
double re,im;
public:
complex(double a=0.0,double b=0.0)
{re=a;im=b;}
friend istream& operator>>(istream&,complex&);
friend ostream& operator<<(ostream&,complex&);
};
istream& operator>>(istream& s,complex& cc2)
{
cout<<"Enter real part:";
s>>cc2.re;
cout<<"Enter imaginary part:";
s>>cc2.im;
return s;
}
ostream& operator<<(ostream& t,complex& cc2)
{
t<<"The real part="<<cc2.re<<endl;
t<<"The imaginary part="<<cc2.im<<endl;
return t;
}
int main()
{
complex c1,c2(2.4,3.8);
cin>>c1;
cout<<c1;
cout<<c2;
return 0;
}
代码对我有用 "as is"。不确定您使用的是哪个平台,但由于这是 C++ 代码,请确保您使用的是 C++ 而不是 C 的编译器。
这是我的 GNU/Linux 终端的输出(将代码放在文件 test.cpp
中):
➜ /tmp g++ test.cpp -o test
➜ /tmp ./test
Enter real part:4
Enter imaginary part:5
The real part=4
The imaginary part=5
The real part=2.4
The imaginary part=3.8
工作没有变化。
在 GNU/Linux 上与 g++ 4.9.2
、clang++-4.7
和 clang++-4.6
一起工作。似乎是编译器错误。
您可以尝试更新到更新版本的 VC++。
我在这段包含运算符重载问题的代码中有七个错误,我尝试对 >> 和 << 进行运算符重载,但它不起作用
#include<iostream>
using namespace std;
class complex
{
private:
double re,im;
public:
complex(double a=0.0,double b=0.0)
{re=a;im=b;}
friend istream& operator>>(istream&,complex&);
friend ostream& operator<<(ostream&,complex&);
};
istream& operator>>(istream& s,complex& cc2)
{
cout<<"Enter real part:";
s>>cc2.re;
cout<<"Enter imaginary part:";
s>>cc2.im;
return s;
}
ostream& operator<<(ostream& t,complex& cc2)
{
t<<"The real part="<<cc2.re<<endl;
t<<"The imaginary part="<<cc2.im<<endl;
return t;
}
int main()
{
complex c1,c2(2.4,3.8);
cin>>c1;
cout<<c1;
cout<<c2;
return 0;
}
代码对我有用 "as is"。不确定您使用的是哪个平台,但由于这是 C++ 代码,请确保您使用的是 C++ 而不是 C 的编译器。
这是我的 GNU/Linux 终端的输出(将代码放在文件 test.cpp
中):
➜ /tmp g++ test.cpp -o test
➜ /tmp ./test
Enter real part:4
Enter imaginary part:5
The real part=4
The imaginary part=5
The real part=2.4
The imaginary part=3.8
工作没有变化。
在 GNU/Linux 上与 g++ 4.9.2
、clang++-4.7
和 clang++-4.6
一起工作。似乎是编译器错误。
您可以尝试更新到更新版本的 VC++。