[gelöst] Operator Überladung, unbekannte Überladung trotz definition
-
Hallo,
mir ist ein merkwürdiger "Fehler" beim überladen von Operatoren untergekommen. Ich habe für eine Klasse den Operator + überladen. Als Beispiel hier die Headerdatei der Klasse Foo. Diese soll nur einen Integer als Variable haben. Zudem wird die Überladung Foo+int deklariert.
foo.h
class Foo { public: Foo(); int x; }; Foo operator+(Foo &lhs, int &rhs);In der cpp Datei wird der Konstruktor sowie die Operator-Überladung ausdefiniert. Nichts besonderes bis jetzt.
foo.cppFoo::Foo() { this->x = 0; } Foo operator+(Foo &lhs, int &rhs) { Foo newFoo; newFoo.x = lhs.x + rhs; return newFoo; }In der Main-Datei soll nun eine Instanz von Foo erstellt werden und die addition getestet werden. Wenn ich den Integer zuerst definiere (Zeile 7-9) geht die Addition auch wunderbar. Möchte ich hingegen einen "vorher nicht definierten Integer" addieren (Zeile 11-12) bekomme ich eine Fehlermeldung:
no match for 'operator+' (operand types are 'Foo' and 'int')
Foo bar2 = myFoo + 2;main.cpp
int main() { Foo myFoo; myFoo.x = 3; cout << "myFoo.x = " << myFoo.x << endl; // this will work int myInt = 2; Foo bar1 = myFoo + myInt; // but this won't Foo bar2 = myFoo + 2; cout << "bar1.x =" << bar1.x << endl; return 0; }Ist dieses Verhalten so gewollt, oder habe ich einen Fehler gemacht? Was kann ich ändern damit so eine "on-the-fly" Addition funktioniert?
Ich nutze den Qt-Creator 3.0.0 (Based on Qt 5.2.0) mit absoluten Standarteinstellungen. Dieser nutzt glaube ich gcc in der Version 4.8.0 zum kompilieren.
Gruß,
Nobody-86
-
Foo operator+(Foo const &lhs, int const &rhs);Foo operator+(Foo const &lhs, int rhs);Foo operator+(Foo lhs, int rhs);Aber von der 2 kannste keine einfache Referenz ziehen, die hat ja keinen Speicher.
-
Hi,
besten Dank! Ich bastel schon seit 2 Tagen daran rum und habe keine Lösung finden können. Das Minimalbeipsiel geht, mal sehen ob es auch im richtige Projekt klappt.