c++ - 复数加法和使用复制构造函数
问题描述
#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()'|
解决方案
您需要为complex
该类定义两个构造函数来解决它:
complex() {}
complex(float rl, float im) : real(rl), imag(im) {}
该值从未初始化,因为没有构造函数分别将 2 和 3 放入real
&imag
中。类对象c1
将需要complex() {}
构造函数。
推荐阅读
- html - 文字和图片并排
- css - 如何在移动设备上的 wordpress 主题上从滑动侧边栏中删除删除徽标
- facebook - Facebook Feed API 行为异常
- socket.io - 连接套接字服务器时出现“由于 xhr 轮询错误而导致的连接错误”
- mongoose - 如果给定参数,猫鼬聚合过滤器
- php - 以正确的方式重新格式化 json
- java - Docker + Maven 抱怨“没有为此构建指定目标”
- apexcharts - 在具有两个 y 轴的 ApexCharts 中,x 轴显示图表之外的数据标签。任何想法如何删除?
- typescript - 为什么一种循环样式会给我一个错误,而另一种却没有?
- ubuntu - 无法建立与 Ubuntu 的连接:安装脚本的结果不好