Hallo zusammen
Ich schreibe gerade eine Klasse für Komplexe Zahlen.
Nun habe ich ein Problem mit dem überladen des Operators + und dem Attribut const:
Der Kompilerfehler bezieht sich auf die Zeile in der "operator+"-Funktion.
Ich versteh nicht, was ich falsch gemacht habe.
Noch eine Frage zu "const":
Soweit ich mich erinnere, wird in Java const so verwendet:
Wie verwendet man "const" richtig in C++?
Im Beispiel aus meinem Buch ist es folgendermassen:
Mir ist jedoch lieber, wenn das "const" beim Rückgabetyp steht. Geht das in C++?
Gruss LukeS
Ich schreibe gerade eine Klasse für Komplexe Zahlen.
Nun habe ich ein Problem mit dem überladen des Operators + und dem Attribut const:
Code:
// ComplexNumber.h
class ComplexNumber
{
public:
ComplexNumber(void);
ComplexNumber(double re, double im = 0);
~ComplexNumber(void);
void setComplexNumber(double re, double im);
const double getImmaginary();
void setImmaginary(double im);
const double getReal();
void setReal(double re);
const double getArgument();
void setArgument(double arg);
const double getNorm();
void setNorm(double len);
void setComplex(double re, double im);
void konjugate();
// operators
ComplexNumber operator+ (const ComplexNumber& c2);
// variables
double immaginary;
double real;
};
Code:
// ComplexNumber.cpp
#include "ComplexNumber.h"
ComplexNumber::ComplexNumber(void)
{
real = 0;
immaginary = 0;
}
ComplexNumber::ComplexNumber(double re, double im)
{
real = re;
immaginary = im;
}
ComplexNumber::~ComplexNumber(void)
{
}
...
const double ComplexNumber::getImmaginary()
{
return immaginary;
}
void ComplexNumber::setImmaginary(double im)
{
immaginary = im;
}
const double ComplexNumber::getReal()
{
return real;
}
void ComplexNumber::setReal(double re)
{
real = re;
}
...
void ComplexNumber::setComplex(double re, double im)
{
real = re;
immaginary = im;
}
void ComplexNumber::konjugate()
{
immaginary = -immaginary;
}
// operators
ComplexNumber ComplexNumber::operator+ (const ComplexNumber& c2)
{
return ComplexNumber(real + c2.getReal(), immaginary + c2.getImmaginary());
}
Code:
Kompiler Fehler:
error C2662: 'ComplexNumber::getReal': this-Zeiger kann nicht von 'const ComplexNumber' in 'ComplexNumber &' konvertiert werden
Durch die Konvertierung gehen Qualifizierer verloren
error C2662: 'ComplexNumber::getImmaginary': this-Zeiger kann nicht von 'const ComplexNumber' in 'ComplexNumber &' konvertiert werden
Durch die Konvertierung gehen Qualifizierer verloren
Der Kompilerfehler bezieht sich auf die Zeile in der "operator+"-Funktion.
Ich versteh nicht, was ich falsch gemacht habe.
Noch eine Frage zu "const":
Soweit ich mich erinnere, wird in Java const so verwendet:
Code:
double const foo();
Wie verwendet man "const" richtig in C++?
Im Beispiel aus meinem Buch ist es folgendermassen:
Code:
double foo() const;
Gruss LukeS