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

<complex>类复数相加问题,求解

hy247767221 发布于 2011-08-12 23:12, 946 次点击
#include<iostream>
#include<complex>
using namespace std;

class Complex
{
    private:
        complex <double> Complex_add;
    public:
        Complex() : Complex_add(0, 0)
        {
            cout << "Initialize!" << endl;
        }
        friend void add(Complex&, complex <double>&, complex <double>&);
        void output();
        ~Complex()
        {
            cout << "Set free!" << endl;
        }
};

void add(Complex& num, complex <double>& num1, complex <double>& num2)
{
    = num1.real() + num2.real();
    = num1.imag() + num2.imag();
}

void Complex :: output()
{
    cout << "The real is" << Complex_add.real() << endl;
    cout << "The imag is" << Complex_add.imag() << endl;
}

int main()
{
    Complex Complex_add;

    complex <double> num1(2.3, 3.4);
    complex <double> num2(4.11, 3.45);

    add(Complex_add, num1, num2);
    Complex_add.output();
   
    cout << endl;
    return 0;
}
运行之后只加了虚部
实部还是0
各位帮帮忙
9 回复
#2
baobaoisme2011-08-13 00:31
void add(Complex& num, complex <double>& num1, complex <double>& num2)
{
    () = num1.real() + num2.real();
    () = num1.imag() + num2.imag();
}
你的这个函数有问题。
另外你这样写不好,重载运算符更好一些。
#3
hy2477672212011-08-13 09:08
回复 2楼 baobaoisme
不行,这样的话编译错误的,而且我才c++入门
重载运算符还不会
#4
玩出来的代码2011-08-13 09:46


//
  = num1.real() + num2.real();
  = num1.imag() + num2.imag();

你这样只是两次调用了comlpex的=重载。并没有将两个数相加、
#5
gzliujie52011-08-13 17:13
唉,完全看不懂~~~
#6
我是菜鸟C2011-08-14 08:26
  你要是不重载操作符的话  那你就定义两个私有成员,一个记录实部相加   ,一个记录虚部相加!!
#7
hy2477672212011-08-14 11:45
回复 6楼 我是菜鸟C
这样的话应该可以的,谢谢啦,我试试!
#8
hy2477672212011-08-14 11:45
回复 4楼 玩出来的代码
嗯···晕晕的,我还得研究下了,谢谢你的答案啦
#9
马甲1号2011-08-14 21:46
程序代码:

void add(Complex& num, complex <double>& num1, complex <double>& num2)
{
    (num1.real() + num2.real());
    (num1.imag() + num2.imag());
}


这样3

#10
hy2477672212011-08-15 10:31
回复 9楼 马甲1号
高手,我试了好多种情况怎么就是没想到这种勒,纠结啊
谢谢你的答案啦!
1