回 帖 发 新 帖 刷新版面

主题:求助

编了一个用类解复数加法的程序,是这样的:
#include<iostream.h>
class complex
{
int real;
int im;
public:

complex(int m,int n)
{
real=m;
im=n;
}
 complex operator+(complex c1);
complex operator=(complex c1);
void show();
};
complex complex::operator+(complex c1)
{
complex c3;
c3.real=real+c1.real;
c3.im=im+c1.im;
return c3;
}

complex complex::operator=(complex c1)
{
real=c1.real;
im=c1.im;
return *this;
}
void complex::show()
{
cout<<real<<"+("<<im<<"i)"<<endl;
}
main()
{
complex a(2,5),b(7,8),c(0,0);
   c=a+b;
   c.show();
return 0;
}
但是出现了下面这个错误
C:\Cpp1.cpp(19) : error C2512: 'complex' : no appropriate default constructor available:
但是当我把“complex complex::operator+(complex c1)”中的C3初始化后就没错了,为什么会这样呢?


回复列表 (共4个回复)

沙发

>>complex(int m,int n);
有这种构造函数,
当你写:
>>complex c3;
编译器想要找到这种样子的构造函数:
complex::complex();
找不到就报错了

板凳

不是很明白

3 楼

#include<iostream.h>
class complex
{
int real;
int im;
public:

complex(int m,int n)
{
real=m;
im=n;
}
 complex operator+(complex c1);
complex operator=(complex c1);
void show();
};
complex complex::operator+(complex c1)
{



return complex(real+c1.real,im+c1.im);
}

complex complex::operator=(complex c1)
{


return complex(real=c1.real,im=c1.im);
}
void complex::show()
{
cout<<real<<"+("<<im<<"i)"<<endl;
}
main()
{
complex a(2,5),b(7,8),c(0,0);
   c=a+b;
   c.show();

}

4 楼

这个程序对了,但能具体解释一下吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册