#include
using namespace std;
class Complex
{
private :
float real;
float image;
public :
Complex(float i=0,float j=0); //构造函数
Complex operator +(Complex temp_1); // +重载成 成员函数
friend void print(const Complex & temp); //打印复数的友员函数
};
//构造函数,在类外定义
Complex ::Complex(float i,float j)
{
real=i;
image=j;
}
// +重载成 成员函数
Complex Complex ::operator +(Complex temp_1)
{
Complex temp_2;
temp_2.real=this->real+temp_1.real;
temp_2.image=this->image+temp_1.image;
return temp_2;
}
//友员函数
void print( const Complex & temp)
{
if(temp.image<=0)
cout<
cout<
}
int main()
{
Complex compx_1(1.0,2.0);
Complex compx_2(3.0,4.0);
print(compx_1 + compx_2);
return 0;
}
你在重载+号的时候,里面的参数只有一个Complex operator +(Complex temp_1);
但是你在main中调用的时候,确调用了两个参数的print(compx_1 + compx_2);
所以编译错误,应该要把重载+号写成有两个参数的
1、首先,你没有默认构造函数Complex temp_2;会出错
2、你的两个成员变量是私有的,不能直接访问,所以,直接访问的都是错的
建议改为公有,或者增加返回函数
float get***() {return ***;}
一般把二元运算符重载成友元函数,一元函数重载成类的成员函数。这里你这样重载怎么能使用compx_1+compx_2呢,重载成友元才行,想你的输出函数一样
q7382168 第一点是对的,但第二点是错的。
你把报的错发出来给大家看看吧
我有一个完整的complex类。可以发给你看看