Solved
Overloading the = operator for my complex number class in c++
Posted on 2007-11-24
I am working on an assignment for my c++ class where I am doing operator overloading. I have everything working but the = operator, I am not sure how to make it work. I need to be able to do something like Complex myNumber = 4.4 5.5 and have it store that. I have attached my code below.
I am being told too many identifiers on my = code... can you see aproblem?
#include <iostream>
using std::cout;
#include"complex1.h"// Complex class definition
// constructor
Complex::Complex( double realPart, double imaginaryPart )
: real( realPart ),
imaginary( imaginaryPart )
{
// empty body
} // end Complex constructor
// addition operator
Complex Complex::operator+( const Complex &operand2 ) const
{
return Complex( real + operand2.real,
imaginary + operand2.imaginary );
} // end function operator+
// subtraction operator
Complex Complex::operator-( const Complex &operand2 ) const
{
return Complex( real - operand2.real,
imaginary - operand2.imaginary );
} // end function operator-
// I used the algorhthym posted in our conference. I had something similar but my parens were off I think :)
Complex Complex::operator*( const Complex &operand2 ) const
{
return Complex( ((real * operand2.real)-(imaginary * operand2.imaginary)), ((real * operand2.imaginary)+(operand2.real * imaginary)) );
} // end function operator*
Complex Complex::operator=( const double realPart, const double imaginaryParft, const Complex& complexNumber ) const
{
complexNumber.getReal(realPar);
complexNumber.getImaginary(imaginaryPart);
return complexNumber
}
std::ostream& operator<<(std::ostream& stream,const Complex& complexNumber)
{
stream << "(" << complexNumber.getReal() << " , " << complexNumber.getImaginary()<<")" << std::endl;
return stream;
}
std::istream& operator>>(std::istream& stream,Complex& value)
{
double realPart, imaginaryPart;
stream >> realPart >> imaginaryPart;
value.getReal(realPart);
value.getImaginary(imaginaryPart);
return stream;
}
bool Complex::operator==( const Complex &operand2 ) const
{
if (real == operand2.real && imaginary == operand2.imaginary)
return true;
else
return false;
}
bool Complex::operator!=( const Complex &operand2 ) const
{
if (real != operand2.real || imaginary != operand2.imaginary)
return true;
else
return false;
}
-------------------------------
#ifndef COMPLEX1_H
#define COMPLEX1_H
class Complex {
public:
Complex( double = 0.0, double = 0.0 ); // constructor
Complex operator+( const Complex & ) const; // addition
Complex operator-( const Complex & ) const; // subtraction
Complex operator*( const Complex &operand2 ) const; // Multiplication
Complex operator=( const double realPart, const double imaginaryParft, const Complex& complexNumber );
bool operator==( const Complex &operand2 ) const;
bool operator!=( const Complex &operand2 ) const;
friend std::ostream &operator<<(std::ostream &stream, const Complex &value);
friend std::istream &operator>>(std::istream &stream, Complex &value);
//accessor functions
double getReal() const { return real; }
double getImaginary() const { return imaginary; }
void getReal(double r) { real = r; }
void getImaginary(double i) { imaginary = i; }
private:
double real; // real part
double imaginary; // imaginary part
}; // end class Complex
#endif