我用C++做了一个复数类Complex,结果编译时报一大堆错,代码如下:
#include <iostream>
#include <cmath>
#include <stdio.h>
#pragma once
using namespace std;
class Complex{
private:
double x;
double i;
string doubleToString(double num){
char ch[20];
sprintf(ch,"%2lf",num);
string result(ch);
return result;
}
public:
// define constructor
Complex():x(0),i(0){}
// normal constructor
Complex(double num):x(num){}
Complex(double num,double y):x(num),i(y){}
// copy constructor
Complex(const Complex &obj):x(obj.x),i(obj.i){}
// copy operator
Complex operator=(const Complex &obj){
x=obj.x;
i=obj.i;
}
// make function
static Complex make(double num){
Complex obj(num);
return obj;
}
static Complex make(double num,double y){
Complex obj(num,y);
return obj;
}
// get function
double num(){
return x;
}
double i(){
return (double)i;
}
// set function
Complex setAs_DA(double dis,double ang){
x=cos(ang)*dis;
i=sin(ang)*dis;
return *this;
}
// math function
double distance(){
return sqrt((pow(x,2))+(pow(i,2)));
}
double angle(){
return atan(i/x);
}
// operator
Complex operator+=(double num){
x+=num;
return *this;
}
Complex operator+=(const Complex &obj){
x+=obj.x;
i+=obj.i;
return *this;
}
Complex operator-=(double num){
x-=num;
return *this;
}
Complex operator-=(const Complex &obj){
x-=obj.x;
i-=obj.i;
return *this;
}
Complex operator+(double num){
Complex temp=*this;
temp+=num;
return temp;
}
Complex operator+(const Complex &obj){
Complex temp=*this;
temp+=obj;
return temp;
}
Complex operator-(double num){
Complex temp=*this;
temp-=num;
return temp;
}
Complex operator-(const Complex &obj){
Complex temp=*this;
temp-=obj;
return temp;
}
Complex operator*=(Complex obj){
double dis=distance();
double ang=angle();
dis*=obj.distance();
ang+=obj.angle();
setAs_DA(dis,ang);
return *this;
}
Complex operator*=(double num){
double dis=distance();
double ang=angle();
dis*=num;
setAs_DA(dis,ang);
return *this;
}
Complex operator*(Complex obj){
Complex temp=*this;
temp*=obj;
return temp;
}
Complex operator*(double num){
Complex temp=*this;
temp*=num;
return temp;
}
bool operator==(const Complex &obj){
return (x==obj.x&&i==obj.i);
}
bool operator!=(const Complex &obj){
return !(this->operator==(obj));
}
bool operator>(const Complex &obj){
return x>obj.x;
}
bool operator<(const Complex &obj){
return x<obj.x;
}
// other function
string toNIString(){
string num=doubleToString(x);
string sign="+";
string y=doubleToString(i);
if(i<0) sign="";
return (num+sign+"i");
}
};
而且大多数都是Complex::i的问题,谁能帮我解决呀