operator= overloading
-
Hallo!
ich möchte den = operator überladen. und zwar so:
class B { private: double d; public: B(const double d) { this->d=d } double getD() { return d; } }; double operator=(const double &d, const B &b) { return b.getD(); } int main() { B b(4); double d=b; return d; }bekomme jedoch vom compiler die fehlermedlung:
double operator=(const double&, const B&)« muss eine nichtstatische Elementfunktion sein
was mach ich falsch??
-
Was soll dieser Operator erreichen?! Einem konstanten Feld einen Wert aus der Klasse B zuweisen? (Ist schon wegen der ersten Hälfte des letzten Satzes nicht möglich)
Ein Zuweisungsoperator sollte auch das tun, zuweisen. Du gibst nur etwas zurück, was wird das?

Ausserdem muss wie der Compiler Dir schon nahelegt operator= eine nichtstatische Elementfunktion (Methode der Klasse) und keine eigenständige Funktion sein.
class X { X& operator=(const X& rechteseite) { this->irgendwas = rechteseite.irgendwas; return *this; } };
-
Du kannst op= nur als Memberfunktion überladen (das heißt auch, daß zu über diesen Operator nicht IN einen vordefinierten Typ zuweisen kannst). Was du benötigst, wäre eher ein "operator double" in deiner Klasse (der ermöglicht es, dein Objekt in einen double-Wert zu konvertieren):
class B { private: double d; public: B(const double d) { this->d=d } double getD() { return d; } operator double() {return d;} }; int main() { B b(4); double d=b; return d; }