首页 > 解决方案 > 复数加法和使用复制构造函数

问题描述

#include<iostream>
using namespace std;
class complex
{
    float real,imag;
public:
    
    complex(complex &c)
    {
        cout<<"copy constructor"<<endl;
        real=c.real;
        imag=c.imag;

    }
    void showData()
    {
        count<<"the sum is"<<endl;
        cout<<real<<"+i"<<imag<<endl;
    }

    complex addition(complex x,complex y)
    {
        complex temp;
        temp.real=x.real+y.real;
        temp.imag=x.imag+x.imag;
        return temp;
    }
};

int main()
{
    complex c2(2,3),c3(c2),c1;
    c2.showData();
    c3.showData();
    c1=c1.addition(c2,c3);
    c1.showData();
    return 0;
}

我想通过从对象传递值并使用复数复制相同的值来添加复数。这是我得到的错误:

Error:C:\Users\Santosh\Documents\cplusplus\complex_addition.cpp|48|error: no matching function for call to 'complex::complex()'|

标签: c++constructorcomplex-numbers

解决方案


您需要为complex该类定义两个构造函数来解决它:

complex() {}
complex(float rl, float im) : real(rl), imag(im) {}

该值从未初始化,因为没有构造函数分别将 2 和 3 放入real&imag中。类对象c1将需要complex() {}构造函数。


推荐阅读