关于C++给类的对象赋值的问题

大家好,我是一个编程菜鸟,在学习类时我遇到这个问题。比如在定义一个复数类Complex的时候,如果不写复制构造函数的话,可以直接用一个值赋予对象。如:Complex c=4.5可以完成。但是一旦写了复制构造函数,就会出现错误:[Error] no matching function for call to 'Complex::Complex(Complex)'。求教

那说明你复制构造函数写的有问题,贴代码上来

增加一个构造函数 public: Complex(float) { ... }

#include
using namespace std;
class Complex{
public:
Complex(double a1,double b1):a(a1),b(b1){}
Complex(double a3):a(a3),b(0){}
Complex(Complex &c):a(c.a),b(c.b){}
void add(Complex n);
void show();
double getA(){return a;}
double getB(){return b;}
private:
double a,b;
};
void Complex::add(Complex n){
double a2=n.getA();
double b2=n.getB();
a+=a2;
b+=b2;
}
void Complex::show(){
cout<<a<<"+"<<b<<"i";
}
int main(){
Complex c1(3,5);
Complex c2=4.5;
c1.add(c2);
c1.show();
return 0;
}这样不行,去掉复制构造函数就可以