注册 登录
编程论坛 C++教室

简单问题求指点错误。。。

fl8962 发布于 2013-01-31 21:29, 300 次点击
编写一个程序实现复数的相加功能,并且可以把复数转化为双精度浮点数进行运算。。下面是我写的代码但是没法运行。。
#include<iostream>
using namespace std;
class complex
{
public:
    complex(){real=0;image=0;}
    complex(double real,double image):real(r),image(i){}
    complex(double r){real=r;image=0;}
    operator double(){return real;}
    friend complex operator +(complex &c1,complex &c2);
    friend ostream & operator <<(ostream&,complex&);
    void display();
private:
    double real;
    double image;
};
complex operator +(complex &c1,complex &c2)
{
    return(c1.real+c2.real,c1.image+c2.image);
}
ostream& operator <<(ostream &output,complex &c)
{
    output<<c.real<<"+"<<c.image<<"i"<<endl;
    return output;
}
void complex::display()
{
    cout<<c.real<<c.image<<endl;
}
int main()
{
    complex c1(1,2),c2(2,3),c3;
    double c4;
    c3=c1+c2;
    cout<<c3;
    c4=c1+c2;
    cout<<c4;
    return 0;
}

2 回复
#2
rjsp2013-02-01 08:36
最好不要起名为 complex,因为C++标准库中已经有一个std::complex了
程序代码:
#include <iostream>

class dbl_complex
{
public:
    dbl_complex( double real=0.0, double image=0.0 ) : real_(real),image_(image)
    {
    }
    operator double() const
    {
        return real_;
    }
    friend dbl_complex operator+( const dbl_complex& a, const dbl_complex& b );
    friend std::ostream& operator<<( std::ostream&, const dbl_complex& );

private:
    double real_;
    double image_;
};
inline dbl_complex operator+( const dbl_complex& a, const dbl_complex& b )
{
    return dbl_complex( a.real_+b.real_, a.image_+b.image_ );
}
std::ostream& operator <<( std::ostream &os, const dbl_complex& c )
{
    return os << c.real_ << '+' << c.image_ << 'i';
}

using namespace std;

int main()
{
    dbl_complex c1(1,2), c2(2,3);
    dbl_complex c3 = c1 + c2;
    cout << c3 << endl;
    cout << c1+c2 << endl;

    return 0;
}

#3
不玩虚的2013-02-01 18:41
弄好了,我就路过啦,顺道学习下!
1