运算符重载问题?

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.2clang++-4.7clang++-4.6 一起工作。似乎是编译器错误。

您可以尝试更新到更新版本的 VC++。