Crazy c writes:
I have hit an error that I do not understand. That is one thing about
Dev that I do not like, I cannot understand the errors. There should
be a course in Dev errors. It is pretty straightforward; I am checking
that the real and imginary parts of a Complex Number are not equal to
0 (division). In (a,b)/(c,d), if c && d = 0; I want to display an
error message and return to the program.
ComplexNumber &ComplexNumber :: operator/ (const ComplexNumber & c1)
{
//check for c & d = 0
if (c1.getReal()== 0 && c1.getImag()== 0) {
cout << "The Complex Number used for your
denominator cannot contain 0 for the real AND
the imaginary part" << endl;
return 1;// this generates the error
}
ComplexNumber complxSum;
double s;
//for s
s = ((this -> getImag() * this -> getImag()) +
(c1.getImag() * c1.getImag()));
//divide
complxSum.setReal ( ((c1.getReal() * this -> getReal())
+ (c1.getImag() * this -> getImag())) /s);
complxSum.setImag ( ((c1.getReal() * this -> getImag())
- (c1.getImag() * this -> getReal())) /s);
return complxSum;
}//end operator/
w>
//error from Dev
102 C:\Documents and Settings\cbrown\My Documents\DSCmplxNum
\ComplexNumber.cpp invalid initialization of non-const reference of
type 'ComplexNumber&' from a temporary of type 'int'
Any ideas as to why the return does not work or what the error
designates?
Your function returns a reference to an object. Instead of returning a
reference to an object, your code tries to return an int value. The compiler
is telling you that this is not a valid type conversion.
If your ComplexNumber object has a constructor that takes an int parameter,
just change the function to return a ComplexNumber object, rather than a
reference to a ComplexNumber object.
A constructor have no return-type, so you can't change it.